複数の ActiveRecord モデルで再利用される named_scope があります。例えば:
named_scope :limit, lambda {|limit| {:limit => limit}}
このコードを抽出してモデル間で共有するためのベスト プラクティスは何ですか。それをモジュールに抽出することは可能ですか、それとも ActiveRecord::Base クラスを再度開く必要がありますか?
複数の ActiveRecord モデルで再利用される named_scope があります。例えば:
named_scope :limit, lambda {|limit| {:limit => limit}}
このコードを抽出してモデル間で共有するためのベスト プラクティスは何ですか。それをモジュールに抽出することは可能ですか、それとも ActiveRecord::Base クラスを再度開く必要がありますか?
モジュールを使用します。このようなものが機能するはずです:
module CommonScopes
def self.included(base)
base.class_eval do
named_scope :limit, lambda {|limit| {:limit => limit}}
end
end
end
次に、CommonScopesを含めるだけで、準備が整います。
@Matt 経由instance_eval、 @see Shared scopes via module?