在rails3中,我在模型中做了相同的作用域。例如我可以在Rails中使用普通的ActiveRecord範圍(範圍)和模塊嗎?
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
(我沒有忘記自動裝載庫)
我怎樣才能輕鬆地重用公共範圍的功能在活動記錄?
我想這個問題涉及加載順序。但我沒有任何想法解決。 請給我提示。