1

検索と並べ替えからいくつかの属性を除外するには、モデルに以下を追加します

UNRANSACKABLE_ATTRIBUTES = %w[id created_at updated_at section] 

def self.ransackable_attributes auth_object = nil
    (column_names - UNRANSACKABLE_ATTRIBUTES) + _ransackers.keys
end

私のモデルの 2 つがこれを使用しているため、コードを DRY に保ち、このメソッドを 1 回記述する方法は何ですか?

4

2 に答える 2

1

これは次の方法で実行できます。

1) 「config/application.rb」の config.autoload_paths += %W(#{config.root}/extras) のコメントを外し、「extras」を「lib」に変更します。

2) 「lib」ディレクトリに「ransackable_attributes.rb」を作成します。

module RansackableAttributes
    extend ActiveSupport::Concern

    included do
        def self.ransackable_attributes auth_object = nil
            (column_names - self::UNRANSACKABLE_ATTRIBUTES) + _ransackers.keys
        end
    end

end

3) モデルに「include」を追加する

class Ad < ActiveRecord::Base
    include RansackableAttributes



class Category < ActiveRecord::Base
    include RansackableAttributes
于 2013-03-17T07:58:46.053 に答える