如何检查ActiveRecord inverse_of检测是否有效?

时间:2015-05-29 11:38:08

标签: ruby-on-rails activerecord associations

根据documentation for ActiveRecord::Associations::ClassMethods,ActiveRecord可以自动确定一个模块的belongs_to关联是否与另一个模型的has_onehas_many关联相反。

但是,我想确保这个检测实际上成功地解决了一些我不确定的关联(例如,我有一个belongs_to并不完全匹配其他模型' s名称,但设置了class_name。有没有办法检查inverse_of检测是否已应用于特定关联?理想情况下,我会在项目的测试套件中添加一些内容,以确保关联是双向的。

1 个答案:

答案 0 :(得分:7)

启动rails控制台,然后运行:

> Rails.application.eager_load!

> ActiveRecord::Base.descendants.each {|m| puts "=== #{m} ==="; m.reflect_on_all_associations.each {|a| puts "#{a.name} => #{a.has_inverse?}"}}

它将转储包含所有模型的列表,它们的关联以及是否已知它们的反转,否则为“假”,“零”或空字符串(基于它未知的原因。)