ただメモができるだけのブラウザアプリ「TextArea」はこちらw

Rails7.1へアップデート時に、簡単に、Ransack 4に対応させる方法(NoMethodError: undefined method `table_name’ forの対処法)

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に対応させたい時は、上記の方法で、今まで通り使えるようになります。

スポンサーリンク
rails
フォローする
さゆフィクション