아래의 코드를 사용하여 활성 레코드를 확장하여 주문 클래스를 조금 더 깨끗하게 만듭니다. 그러나 그것은 작동하지 않습니다. 반면에 나는 추상 기본 클래스 OrderBase을 만드는 경우ActiveRecord :: Base 확장이 작동하지 않습니다.
으로 environment.rb에서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
나는
require "#{Rails.root}/lib/active_record_extensions.rb"
와 위의 확장을 필요로하고 대신 예상대로 작동하는지에서의 내 주문 클래스 상속을하자 . 내 원숭이 패치를 "가져 가려면"무엇을해야합니까?
EDIT : 내가 has_statuses에 대해 누락 된 메서드를 말하는 메시지가 나타납니다.
는 EDIT2 : 위의 코드는 콘솔에서 작동는 (C 레일)하지만 테스트에서 작동하지 않습니다
EDIT3 : 나는 = 거짓 그가 보인다 config.cache_classes에 환경/test.rb을 변경 속임수를 써라. 분명히 배워야 할 것이 많습니다 :)
이 실제로 나를 위해 작동의 상단에 필요로 추가 : 여기
ActiveRecord::Base
확장 내 작업입니까? – seeingidog클래스를 깨끗하게 유지하기 위해 has_statuses : created, : in_progress, : 등의 Order 클래스에서 사용하려고합니다. – mhenrixon
@ tourismidog err 이제 나에게도 효과가있다. 그리고 나는 무엇이 다른지 전혀 모른다. ... 나는 분명히 무엇인가했으나 무엇을 모르는지 모른다. 그것이 작동해야한다고 대답을 게시하고 그 대답으로 표시 할 것입니다! – mhenrixon