ActiveRecord has_many通过inverse_of导致rails admin工作?

时间:2014-10-31 02:00:10

标签: ruby-on-rails ruby activerecord associations rails-admin

我理解在ActiveRecord中对于has_many:通过关联不能使用inverse_of,但我遇到了一个问题,我在Rails Admin gem中有很多模型,当我尝试编辑或创建新资源时,加载该页面导致模板渲染的无限递归。

问题是here

当我尝试删除

accepts_nested_attributes_for :recipes, allow_destroy: true

它起作用,错误就消失了。

但是当我保留accepts_nested_attributes_for并放置

时,它也有效
has_many :recipes, :through => :recipe_categorizations, :inverse_of => :categories

:最后的inverse_of。

这怎么可能? Isn的逆转不可用于:通过?它的存在会造成任何伤害还是被忽略?

如果有任何帮助,我会使用Rails 4。

1 个答案:

答案 0 :(得分:1)

如果您未设置:inverse_of记录,则关联将尽力与正确的反向匹配。自动反向检测仅适用于has_manyhas_onebelongs_to关联。

AssociationReflection::INVALID_AUTOMATIC_INVERSE_OPTIONS常量中定义的关联的额外选项也会阻止自动找到关联的反转。

反向关联的自动猜测使用基于类名称的启发式方法,因此它可能不适用于所有关联,尤其是具有非标准名称的关联。

以下是设置反转的source