3
根据documentation for ActiveRecord::Associations::ClassMethods,ActiveRecord可以自动确定一个模块的关联是否与另一个模型的has_one
或has_many
关联相反。然而,我想确保这个检测实际上成功了一些我不确定的关联(例如,我有一个belongs_to
,它不完全匹配其他模型的名称,但有class_name
集合)。有没有办法检查inverse_of
检测是否应用于特定关联?理想情况下,我会在项目的测试套件中添加一些内容以确保该关联是双向的。如何检查ActiveRecord的inverse_of检测是否有效?
这不完全是你要求的,但你应该在关联上设置“:inverse”选项,而不是让Rails自动计算反比关系,如果你想在某处使用“反向”功能。 –
@MaxWilliams不,你不应该。这是一个完美的配置惯例。我认为编写多余的代码不是rails的方式,即如果Rails> = 4.1的自动反转检测机制已经选择了它,那么写一个'inverse_of'选项是没有意义的。此外,我遇到的案例中有99%不是关于功能,而是性能提升,所以没有杠杆作用,仍然有优势。问题是关于是否很难确定是否已经检测到逆。 –
我认为从可读性/自我记录代码的角度来看,它有很多意义:如果选项a)保证Rails能够做正确的事情,并且b)让同事明白某些不寻常的事情正在发生,那么什么是伤害? –