다른 모델의 테이블에있는 항목을 기반으로 메서드를 정의하는 모델이 있습니다 (예 : Article 및 Type). 기사 habtm 형식 및 그 반대로.다른 모델의 방법을 레일에 강제로 다시로드 하시겠습니까?
나는 Article.rb에 정의
Type.all.each do |type|
define_method "#{type.name}?" do
is?(:"#{type.name}")
end
end
이 좋은 작품! 당신이 제 모델을로드 할 때
article.type?
그러나, 이러한 방법은 실행이 같은 날 관련된 방법의 유형 dB 결과의 모든 유형이 생성되는 것을 확인 할 수 있습니다. 예를 들어 Rails Console에서 새로운 Type을 작성하면 article.type_name 메소드가 생성됩니까? 내가 reload!
까지 정의되지 않을 것이다.
또한 test/rspec에도 동일한 문제가 있습니다. 특정 수의 유형을 만들면 관련 메소드가 아직 존재하지 않습니다. 그리고 rspec에서 User 모델을 다시로드하는 방법을 모르겠습니다.
해결책을 아는 사람이 있습니까? 아마도 새로운 모델을 만들 때 Article 모델의 메서드를 다시로드 할 수있는 방법이 있을까요? 이것은있을 법하지 않겠지 만 .. 어떤 조언이나지도가 좋을 것입니다!
네에서 작동합니다. 그러나 기존 시스템에서 개발 중이며 일부는 article.type_name에 따라 다릅니다. 가능하지 않다면 이걸 버려도됩니다. – jay
몇 분만 더 기다렸다가 대답을 업데이트하겠습니다. 'after_insert' 블록에서'Article'에'define_method'를 호출하기 위해'Type'에 추가 할 수 있습니다. – deefour
cool. 그냥 생각 : after_insert? 또는 after_commit 중 어느 것이 더 신뢰할 수 있습니까? – jay