我有一个模型,它根据另一个模型表中的条目定义方法:例如文章和类型。一篇文章 habtm 类型,反之亦然。
我在 Article.rb 中定义:
Type.all.each do |type|
define_method "#{type.name}?" do
is?(:"#{type.name}")
end
end
这很好用!它允许我确保类型 db 中的任何类型都会导致创建关联的方法,例如:
article.type?
但是,这些方法仅在您加载 Article 模型时运行。这引入了一些警告:例如,在 Rails 控制台中,如果我创建一个新类型,它的方法 article.type_name? reload!
直到我一切都不会被定义。
此外,test/rspec 中也存在同样的问题:如果我创建了一定数量的类型,它们的关联方法将不存在。在 rspec 中,我不知道如何重新加载 User 模型。
有谁知道这里的解决方案?也许,有什么方法可以在创建新类型时重新加载 Article 模型的方法?这听起来不太可能......任何建议或指导都会很棒!