1
我有一個模型,基於另一個模型的表中的條目定義方法:例如文章和類型。一篇文章habtm類型,反之亦然。強制在軌中重新加載另一個模型的方法?
我定義Article.rb:
Type.all.each do |type|
define_method "#{type.name}?" do
is?(:"#{type.name}")
end
end
這個偉大的工程!它可以讓我以確保正在創建DB型結果相關聯的方法的任何類型,如:
article.type?
但是,當您加載條模型,這些方法只是運行。這引入了一些警告:例如,在Rails控制檯中,如果我創建一個新的Type,它的方法article.type_name?直到我reload!
一切都不會被定義。
此外,test/rspec中存在同樣的問題:如果我創建了一定數量的類型,它們的關聯方法將不存在。而在rspec中,我不知道如何重新加載User模型。
有沒有人知道這裏的解決方案?也許,在創建一個新類型時,有什麼方法可以重新加載Article模型的方法?這聽起來不太可能..任何建議或指導將是偉大的!
是的工作,我可以看到爲什麼這是更好的。但是,我正在開發一個預先存在的系統,其中一些取決於article.type_name?如果不可能,我可能會放棄這一點。 – jay
幾分鐘後,我會更新我的答案;我正在研究'after_insert'塊,您可以添加到'Type'來調用'Article' – deefour
cool的'define_method'。只是一個想法:after_insert?或after_commit,哪一個會更可靠? – jay