【发布时间】:2011-08-28 19:21:02
【问题描述】:
在 rails3 中,我在模型中制作了相同的范围。例如
class Common < ActiveRecord::Base
scope :recent , order('created_at DESC')
scope :before_at , lambda{|at| where("created_at < ?" , at) }
scope :after_at , lambda{|at| where("created_at > ?" , at) }
end
我想将公共范围拆分为 lib 中的模块。所以我试试这个。
module ScopeExtension
module Timestamps
def self.included(base)
base.send :extend, ClassMethods
end
module ClassMethods
scope :recent , lambda{order('created_at DESC')}
scope :before_at , lambda{|at| where("created_at < ?" , at) }
scope :after_at , lambda{|at| where("created_at > ?" , at) }
end
end
我写了这个
class Common < ActiveRecord::Base
include ScopeExtension::Timestamps
end
但 Rails 显示此错误。
undefined method `scope' for ScopeExtension::Timestamps::ClassMethods:Module
(我没有忘记自动加载库)
如何在活动记录中轻松重用通用范围功能?
我猜这个问题与加载顺序有关。但我没有任何想法要解决。 请提示我。
【问题讨论】:
标签: ruby-on-rails-3 activerecord scope