【问题标题】:How do I update a model object's associated object?如何更新模型对象的关联对象?
【发布时间】:2009-08-20 07:06:03
【问题描述】:

我想要以下内容:

@user.update_attributes(:name => "Obama", :profile => { :current_location => 'US' })

用户拥有一个个人资料的位置。

【问题讨论】:

    标签: ruby-on-rails activerecord associations


    【解决方案1】:

    使它们成为“嵌套属性”。 The documentation 说:

    考虑一个有一个 Avatar 的 Member 模型:

      class Member < ActiveRecord::Base
        has_one :avatar
        accepts_nested_attributes_for :avatar
      end
    

    ...

    允许您通过会员更新头像:

      params = { :member' => { :avatar_attributes => { :id => '2', :icon => 'sad' } } }
      member.update_attributes params['member']
      member.avatar.icon # => 'sad'
    

    【讨论】:

      【解决方案2】:

      正如 bjelli 所说,这是您可能想要的 accepts_nested_attributes_for 方法。重要的是要注意,这是配置文件的 :id 属性的传入,它允许它识别它是您想要执行的更新。

      我建议阅读nested_attributes.rb cmets 以了解更多信息:)

      【讨论】:

        猜你喜欢
        • 2013-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-07
        • 1970-01-01
        • 2014-04-27
        相关资源
        最近更新 更多