12

複数の ActiveRecord モデルで再利用される named_scope があります。例えば:

  named_scope :limit, lambda {|limit| {:limit => limit}}    

このコードを抽出してモデル間で共有するためのベスト プラクティスは何ですか。それをモジュールに抽出することは可能ですか、それとも ActiveRecord::Base クラスを再度開く必要がありますか?

4

2 に答える 2

21

モジュールを使用します。このようなものが機能するはずです:

module CommonScopes
  def self.included(base)
    base.class_eval do
      named_scope :limit, lambda {|limit| {:limit => limit}}
    end
  end
end

次に、CommonScopesを含めるだけで、準備が整います。

于 2008-10-09T12:47:26.560 に答える
0

@Matt 経由instance_eval、 @see Shared scopes via module?

于 2012-10-17T10:32:08.813 に答える