Как обновить объект, связанный с объектом модели? - PullRequest
2 голосов
/ 20 августа 2009

Я хочу что-то вроде следующего:

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

где пользователь имеет профиль один_

Ответы [ 2 ]

7 голосов
/ 20 августа 2009

Сделать их «вложенными атрибутами». В документации написано:

Рассмотрим модель участника с одним аватаром:

  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'
1 голос
/ 20 августа 2009

Как сказал bjelli, это accepts_nested_attributes_for метод, который вы, вероятно, захотите здесь.Важно отметить, что именно передача атрибута профиля: id позволяет ему распознать обновление, которое вы хотите выполнить.

Я бы порекомендовал прочитать эти комментарии nested_attributes.rb , чтобы понять больше:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...