dev/mom0tomo

技術メモ

2018-09-01から1ヶ月間の記事一覧

Railsのバリデーションエラーを日本語化する

読んだもの Railsのバリデーションエラーのメッセージの日本語化 学んだこと 下記の手順で設定する。 1.以下のgemをインストールする gem rails-i18n 2.config/application.rbに設定を追加する config/application.rb config.i18n.default_locale = :ja 3.ja…

Railsのモデルと一対多のリレーションのまとめ

読んだもの Rails4で1対多のリレーションをモデルに実装する - Rails Webook Active Record の関連付け (アソシエーション) | Rails ガイド 学んだこと 下記のようなUser has many Itemsという関係のモデルを考える。 user.rb class User < ApplicationRecor…

インスタンスメソッドの理解

ずっともやっとしてた部分を整理したらアハ体験があったのでまとめる。 こんなモデルがある場合。 models/user.rb class User < ApplicationRecord has_many :items end models/item.rb class Item < ApplicationRecord belongs_to :user validates :user_id…

Rails 5.1以降 でjqueryを使う

Rails5.1から、デフォルトではjqueryに依存しない仕様になった。 Ruby on Rails 5.1リリースノート | Rails ガイド jqueryを使うためには下記の手順を踏むこと。 Gemの追加とbundle update Gemfileに gem "jquery-rails"を追加し、bundle updateを実行する。…

Railsアプリを作るときの共通パーツの設定

初期設定はこちら。 mom0tomo.hateblo.jp 共通レイアウトはapp/views/layouts/ に配置する。 headタグのパーツ app/views/layouts/application.html.erb <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>アプリ…</meta></meta></meta></head></html>

Railsの便利なコマンドと設定

新規アプリケーション作成するとき DBの種類を設定する $ rails new {app_name} --database=mysql テストを作成しない $ rails new {app_name} --skip-test bundle installするとき gemのインストールパスを指定する $ bundle install --path vendor/bundle …

モデル名と異なるアソシエーション名を使う場合の決まり

Rails tutorialでも出てくるuserがfollowings/followers(どちらもuserテーブルを使う)を持つ関係を例にまとめる。 models/user.rb class User < ApplicationRecord # followingsのアソシエーション has_many :relationships has_many :followings, through…

Railsのアソシエーションの仕組み

理解するのにものすごく時間がかかったので、まとめておく。 アソシエーションとは 簡単にいうとモデルを参照するためのメソッド。 例は下記に示す。 メソッドはふだん使うときに書くが(当たり前)、アソシエーションは使い道も書き方も決まっていてるので…

HerokuでgitpushしようとするとPermission denied (publickey).になる

読んだもの opamp.hatenablog.jp 学んだこと 会社でつかっていたリポジトリをクローンして herokuに変更をpushしようとしたところ、下記のエラーになった。 $ git push heroku master Warning: Permanently added the RSA host key for IP address '50.19.85…

find_or_create_byとfind_or_initialize_byの違い

読んだもの blog.hello-world.jp.net 学んだこと 両者の違いは下記の通り。 find_or_create_byだと新規作成して保存 find_or_initialize_byして保存はしない 保存しないことのメリットは、新規作成するときのみ併せて何かする、という処理ができること。 fin…

Herokuアプリを削除する

git remoteから削除するのを忘れがち。 Heroku上のアプリを削除 $ heroku apps:destroy --app { app_name } git remoteから削除 $ git remote rm heroku // 確認する $ git remote -v

RailsのアプリケーションをHerokuにデプロイする流れ

たまにしか一連の流れをやらないので、いつも何かを忘れてしまう。 まとめておく。 コマンドラインツールのインストール $ wget https://cli-assets.heroku.com/heroku-cli/channels/stable/heroku-cli-linux-x64.tar.gz -O heroku.tar.gz $ sudo mkdir -p /…

Rspecで"You must pass an argument rather than a block...." エラー

読んだもの www.d-wood.com 学んだこと matcherにはブロックを受け取れるものとそうでないものがある。 例えば以下のように書くと表題のエラーになる。 context 'とある場合' do it '名前がほげほげであること' do expect { described_class.new(user).name …

多対多のリレーションをhas_manyでモデルに実装する

Railsでは、ActiveRecordのhas_manyかhas_and_belongs_to_manyを使うことで、多対多のテーブルどうしの関連をモデルに実装できる。 基本的には拡張性のあるhas_manyを使った方がよい。 マイグレーションファイルをつくる Twitterクローンの例をもとに、user…

【解消法】has_secure_passwordを使おうと思ったらbcryptでエラー

こんなエラーが出た。 cannot load such file -- bcrypt bcrypt gemでよくあるエラーらしい。 読んだもの https://github.com/codahale/bcrypt-ruby/issues/142#issuecomment-291345799 学んだこと 解消法 $ gem uninstall bcrypt $ gem uninstall bcrypt-ru…