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通过模块共享范围?

于 2012-10-17T10:32:08.813 回答