Je veux quelque chose comme ce qui suit:Comment mettre à jour l'objet associé à un objet de modèle?
@user.update_attributes(:name => "Obama", :profile => { :current_location => 'US' })
où le profil has_one utilisateur.
Je veux quelque chose comme ce qui suit:Comment mettre à jour l'objet associé à un objet de modèle?
@user.update_attributes(:name => "Obama", :profile => { :current_location => 'US' })
où le profil has_one utilisateur.
Rendez-les 'attributs imbriqués'. The documentation dit:
Tenir compte un modèle membre qui a un Avatar:
class Member < ActiveRecord::Base
has_one :avatar
accepts_nested_attributes_for :avatar
end
...
vous permet de mettre à jour l'avatar par le membre:
params = { :member' => { :avatar_attributes => { :id => '2', :icon => 'sad' } } }
member.update_attributes params['member']
member.avatar.icon # => 'sad'
Comme bjelli a a déclaré que c'est la méthode accepts_nested_attributes_for
que vous voulez probablement ici. Il est important de noter que c'est la transmission de l'attribut: id du profil qui lui permet de reconnaître qu'il s'agit d'une mise à jour que vous voulez effectuer.
Je recommanderais de lire ceci les commentaires nested_attributes.rb pour comprendre plus:)