【问题标题】:rails 4 When is "inverse_of" required?rails 4 什么时候需要“inverse_of”?
【发布时间】:2015-08-12 04:34:19
【问题描述】:

我是第一次使用 rails 4 开发网络应用程序。我正在使我的所有模型关联都是双向的,并在允许的任何地方使用 inverse_of。

通过阅读文档,我产生了这样的印象,即这可能是最佳实践,但从来没有在任何地方真正清楚地说明过。

如果有经验的 Rails 开发人员在这方面提供任何一般性建议,我将不胜感激。我希望这个问题不会太模糊,在这里没有价值。

谢谢!

更新:除了非标准名称之外,似乎还有两种主要的额外情况需要明确设置 inverse_of:

  1. 对于 INVALID_AUTOMATIC_INVERSE_OPTIONS (http://www.rubydoc.info/docs/rails/ActiveRecord/Reflection/AssociationReflection)
  2. 如果您接受嵌套属性 - 这是因为父对象尚未保存,因此没有 ID。见http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations

【问题讨论】:

    标签: ruby-on-rails ruby bidirectional-relation rails-4-2-1


    【解决方案1】:

    通常需要设置逆数。好消息是在大多数情况下这是自动处理的。您通常只需要显式设置与非标准名称的关联的逆。您可以在official documentation 中找到更多信息。

    【讨论】:

    • 谢谢。我发现我仍然遇到了这里描述的问题:viget.com/extend/… 在标题下 Creating an object and its children via accept_nested_attributes_for in a :has_many 关联。 我发现为每个关联,这样我就不必担心它是否会在特定情况下“正常工作”......
    • @Nesteddoll 在短期内可能更容易。我管理着数百个生产 Rails 应用程序,我可以肯定地告诉你,用你不理解的不必要的代码乱扔你的应用程序将很快成为维护的噩梦。挑战自己变得更好,不要在你的应用程序中添加你不需要的额外代码,也不要添加你不理解的代码。你未来的自己会感谢你的。
    • 谢谢。我很欣赏你所说的——我会更详细地研究 inverse_of。
    • 嗨布拉德,我会接受你的回答 - 我需要查找如何做到这一点,因为我是一个新用户:)。除了非标准名称之外,我似乎还有两个主要的额外情况需要显式设置 inverse_of:1. 对于 invalid_automatic_inverse_options (rubydoc.info/docs/rails/ActiveRecord/Reflection/…) 2. 如果您按照 (viget.com/extend/…) 接受嵌套属性,谢谢你追究我的责任。当我能够删除多余的代码时,它肯定会清理代码
    猜你喜欢
    • 1970-01-01
    • 2018-04-05
    • 2012-09-16
    • 1970-01-01
    • 2018-12-10
    • 2010-12-29
    • 2017-07-13
    • 2012-08-21
    • 2011-08-18
    相关资源
    最近更新 更多