我尝试使用下面的代码来扩展活动记录,让我的订单类更清洁一些。然而,它不工作。ActiveRecord :: Base Extension不工作
class ActiveRecord::Base
def self.has_statuses(*status_names)
validates :status,
:presence => true,
:inclusion => { :in => status_names}
status_names.each do |status_name|
scope "all_#{status_name}", where(:status => status_name)
end
status_names.each do |status_name|
define_method "#{status_name}?" do
status == status_name
end
end
end
end
在environment.rb中我需要上面的扩展与
require "#{Rails.root}/lib/active_record_extensions.rb"
如果我在另一方面创建一个抽象基类OrderBase并让我的订单类继承从相反它正在按预期。我需要做些什么来使我的猴子补丁“接受”?
编辑:忘了提及我收到一条消息,说缺少has_statuses的方法。
EDIT2:上面的代码工作在控制台(导轨C),但它并没有在测试工作
EDIT3:我改变了环境/ test.rb到config.cache_classes =假,这似乎做的伎俩。显然有很多要学习:)
这实际上对我的作品的顶部,你是如何使用这种方法? – seeingidog 2011-02-05 07:23:49
我想在我的Order类中使用它,如:has_statuses:created,:in_progress,:shipped等以保持类的清洁。 – mhenrixon 2011-02-05 11:20:27