Das verschachtelte Attribut update_attributes verwendet insert statt update

Ich habe eine Benutzer-und nested-Profil-Klasse wie folgt:

class User < ActiveRecord::Base
  has_one :profile
  attr_accessible :profile_attributes
  accepts_nested_attributes_for :profile
end

class Profile < ActiveRecord::Base
  belongs_to :user
  attr_accessible :name
end

user = User.find(1)
user.profile.id  # => 1
user.update_attributes(profile_attributes: {name: 'some name'})
user.profile.id  # => 2

Ich verstehe nicht, warum rails ist das wegwerfen der alten Profil und eine neue erstellen.

Mit

user.profile.update_attributes({name: 'some name'})

nur updates, das aktuelle Profil, wie erwartet.
Aber in diesem Fall bin ich nicht nutzen accepts_nested_attributes_for

Weiß jemand, warum das update auf diese Weise geschieht? Ich würde lieber nicht bis zum Ende mit einer Datenbank von Profil-Zeilen, die nicht mit einem Benutzer.

Kommentar zu dem Problem - Öffnen
vielleicht können Sie versuchen, user.update_attributes(profile_attributes: {:id =>Benutzer.Profil.id, :name,: 'einige name'}) Kommentarautor: Hardik Patel

InformationsquelleAutor der Frage Jason | 2012-03-30

Schreibe einen Kommentar