Rails:在现有模型中引入inverse_of约束

时间:2017-08-19 17:55:42

标签: ruby-on-rails activerecord has-many belongs-to

我维护了一个包含数十个模型类和它们之间的各种关系的大型Rails 4.1代码库。我最近在ActiveRecord / inverse_of关系(实际上是has_one关系)上发现了has_many belongs_to约束。我的模型中的这些关系目前都没有inverse_of强制实施,但由于我在4.1,我假设Rails会自动推断出这些关系。但是现在添加inverse_of关系会导致任何失败吗?

  1. 我只能想到没有inverse_of的场景,如果我们以不同方式编辑它们并尝试保存它们,则引用同一基础记录的对象的两个不同实例可能是不一致的状态。但是当所有引用引用相同的实例时,是否有一个警告?

  2. 可以部分应用inverse_of - 仅针对某些has_many / belongs_to关系,而不是其他关系,会导致问题吗?

1 个答案:

答案 0 :(得分:1)

来自文档:

  

Rails现在可以自动检测反向关联。如果你不   在关联上设置:inverse_of选项,然后Active Record将   猜测基于启发式的逆关联。

     

有一些限制:inverse_of支持:

     

不适用于:通过关联。

     

不适用于:多态关联。

     

belongs_to关联has_many的反向关联将被忽略。