Я пытаюсь использовать приведенный ниже код для расширения активной записи, чтобы мой класс заказов был немного чище.Однако он не работает.
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: Приведенный выше код работает в консоли (rails c), но не работает в тесте
EDIT3: Я изменил среду / тест.rb в config.cache_classes = false, и это, кажется, делает свое дело.Очевидно, есть чему поучиться:)