Ransackを使って関連先のカラムで絞り混む

確認環境

  • Rails 4.2.1
  • ransack 1.6.6

関連先の情報で絞り込む

1
2
3
4
5
6
7
class Turtle < ActiveRecord::Base
  has_many :eggs
end

class Egg < ActiveRecord::Base
  belongs_to :turtle
end

scopeを使った場合

1
Turtle.joins(:eggs).where(eggs: {color: 'green'})

ransackを使った場合

1
Turtle.ransack(eggs_color_eq: :green).result

eggs_color_eqと指定することで関連先eggsテーブルのcolorカラムが一致するTurtleオブジェクトを取得できる。