2
class SomeModel < ActiveRecord::Base
  named_scope :recent, lambda { { :conditions => ['created_at > ?', 1.week.ago] } }
end

我想扩展 AR::Base 类以使所有模型都有这个 named_scope,我该怎么做?

4

1 回答 1

3

在config/initializers中创建一个新的初始化文件,然后重新打开 ActiveRecord 的Base类以添加命名范围:

module ActiveRecord
  class Base
    named_scope :recent, lambda {
      { :conditions => ['created_at > ?', 1.week.ago] }
    } 
  end
end

——当然,如果你试图在没有created_at属性的模型上使用这个命名范围,你会得到一个相当丑陋的错误......

于 2010-05-18T14:39:55.547 回答