Как извлечь общие named_scopes из моделей ActiveRecord
У меня есть named_scope, который повторно используется в нескольких моделях ActiveRecord.
Например:
named_scope :limit, lambda {|limit| {:limit => limit}}
Какова наилучшая практика для извлечения этого кода для общего доступа к моделям.
Можно ли извлечь его в модуль или лучше открыть класс ActiveRecord:: Base?
Ответы
Ответ 1
Используйте модуль. Что-то вроде этого должно работать:
module CommonScopes
def self.included(base)
base.class_eval do
named_scope :limit, lambda {|limit| {:limit => limit}}
end
end
end
Затем просто включите CommonScopes, и вам будет хорошо идти.
Ответ 2
@Matt через instance_eval, @see Общие области с помощью модуля?