Ransack
には、検索可能として明示的に許可リストに登録された
関連付けが必要です
概要
gem「ipaddress」をインストールするまで私のコードは実行され、機能していましたが、以前に作成したモデルはすべて次のエラーが発生するようになりました。
Ransack には、明示的に許可リストに登録された
User で ransackable_associations クラス メソッドを定義します。 モデル、検索したくないアイテムに注意してください ( たとえば、encrypted_password、password_reset_token、owner、または その他の機密情報)。以下をベースとして使用できます。
class User < ApplicationRecord
# ...
def self.ransackable_associations(auth_object = nil)
["comments", "created_by", "favorites", "impressions_by_user", "updated_by", "user_group"]
end
# ...
The issue I have with this is I need a dynamic to do this instead of having to redo this for every single model that I have created.
解決策
モデルを ActiveRecord::Base の使用から ApplicationRecord の使用に変更し、次のコードを含む Application_Record.rb ファイルを作成する必要がありました。
class ApplicationRecord < ActiveRecord::Base
primary_abstract_class
Rails.logger.info("INSIDE APPLICATION RECORD");
self.abstract_class = true
def self.ransackable_attributes(auth_object = nil)
column_names + _ransackers.keys
end
def self.ransackable_associations(auth_object = nil)
reflect_on_all_associations.map { |a| a.name.to_s } + _ransackers.keys
end
end
次に、イニシャライザの印象派拡張機能を微調整して、次のメソッドを追加する必要がありました。
def ransackable_associations(auth_object = nil)
Rails.logger.info("WITHIN RANSACK ASSOCIATION")
super + %w[impressionable]
end