self.ransackable_attributesで自身で許可するカラムを、self.ransackable_associationsで関連付けの参照先で許可するmodelを指定できる。
参照先のmodelでは、self.ransackable_attributesで同様にして許可するカラムを指定する。
具体例
PostモデルとTagモデルが多:多で、Postの検索でTagのnameカラムを利用したい場合(tag_postsが中間テーブル)
Post.rb
class Post < ApplicationRecord
has_many :tag_posts, dependent: :destroy
has_many :tags, through: :tag_posts
def self.ransackable_associations(_auth_object = nil)
#多なので複数形で指定
['tags']
end
end
Tag.rb
class Tag < ApplicationRecord
has_many :tag_posts, dependent: :destroy
def self.ransackable_attributes(_auth_object = nil)
['name']
end
end