我嘗試使用下面的代碼來擴展活動記錄,讓我的訂單類更清潔一些。然而,它不工作。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