В 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
(я не забыл автозагрузку библиотеки)
Как я могу легко повторно использовать общую область видимости в активной записи?
Полагаю, эта проблема связана с последовательностью загрузки. Но я понятия не имею, чтобы решить.
Пожалуйста, намекните мне.