Rails7.1へアップデート時に、簡単に、Ransack 4に対応させる方法について書いていきます。
Rails7.1へアップデートする場合、Ransack はバージョン4にアップデートする必要があります。
Ransackが古い状態だと以下のエラーになります。
NoMethodError: undefined method `table_name' for
Ransack 4の更新内容
検索・ソートできるDB項目を制限する機能が追加されました。
そのため、Ransackをアップデートすると、検索・ソートできる項目を指定する必要があります。
検索・ソートできる項目を指定しないとエラーになりますが、項目を指定するのは、かなり手間です。
かなり手間なので、簡単な対応方法を記載します。
Ransack 4に簡単に対応する方法
ApplicationRecordクラスに以下のコードを記載するとエラーは消え、今まで通り使えます!
def self.ransackable_attributes(auth_object = nil)
# 全ての列を検索可能にする
authorizable_ransackable_attributes
end
def self.ransackable_associations(auth_object = nil)
# 全ての関連テーブルを検索可能にする
authorizable_ransackable_associations
end
本来であれば、検索・ソートできる項目を指定していくのが良いと思いますが、既存アプリのアップデートで時間がない場合など、簡単にRansack 4に対応させたい時は、上記の方法で、今まで通り使えるようになります。