【问题标题】:Why is Ruby on Rails' AssociationProxy deprecated, and what replaced it?为什么 Ruby on Rails 的 AssociationProxy 被弃用,是什么取代了它?
【发布时间】:2012-09-10 14:58:37
【问题描述】:

根据 API Dock,ActiveRecord::Associations::AssociationProxy 现在已“弃用或移动”。我很好奇这堂课发生了什么。如果它真的不再存在,Rails 现在如何处理关联?根据该网站上的其他几篇帖子(如 this one),AssociationProxy 是允许使用 User.find(1).groups << Group.find_by_id(13) 等语法所必需的。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2


    【解决方案1】:

    根据 ActiveRecord 的 3.1.0 版本更新日志:

    • ActiveRecord::Associations::AssociationProxy 已拆分。现在有一个 Association 类 (和子类)负责对关联进行操作,然后是单独的, 称为 CollectionProxy 的瘦包装器,它代理集合关联。

      这可以防止命名空间污染,分离关注点,并允许进一步重构。

      单一关联(has_one、belongs_to)根本不再有代理。他们只是返回 相关记录或零。这意味着您不应使用未记录的方法,例如 作为 bob.mother.create - 改用 bob.create_mother。

    【讨论】:

    • 啊,更新日志。听起来它在未来可能会有用。你知道我在哪里可以找到 Rails 更新日志的其余部分吗?
    • @Ajedi32 Well known Ruby on Rails Guides 包含此信息。转到guides.rubyonrails.org,滚动到几乎底部(到名为“发行说明”的部分),享受。例如,这里是 3.1 版本的更改:guides.rubyonrails.org/3_1_release_notes.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2010-10-17
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    相关资源
    最近更新 更多