rails4の条件付きアソシエーション
Rails4から条件付きアソシエーションの記述の仕方が変わりconditionsパラメータが非推奨になりました。変わってどう書くのかを以下に記載します。
テーブル同士の関連(1体多など)に条件を追加した場合があります。例えばusersテーブルとcommentsテーブルがあるとして自分のコメントのみ取得したい場合、以下のように記述します。
class User < ActiveRecord::Base has_many :my_comments, ->(record) { where(user_id: record.id) }, class_name: Comment end
使い方は次のようになります。usersテーブルのid=1の方が投稿したコメントを取得したい場合、
user = User.find(1) user.my_comments
※注意点
ここでclass_name: Comment
を:my_comments
の後ろにするとエラーになる。順番があるようで、条件付きを入れる場合は最初に書かないと駄目らしい。