Ho un utente e la classe profilo annidata nel modo seguente:attributo nidificati update_attributes usi inseriscono piuttosto che aggiornare
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
Non capisco il motivo per cui le rotaie è buttare via il vecchio profilo e crearne uno nuovo.
Utilizzando
user.profile.update_attributes({name: 'some name'})
solo aggiorna il profilo corrente come previsto. Ma in tal caso non sto approfittando di accept_nested_attributes_for
Qualcuno sa perché l'aggiornamento avviene in questo modo? Preferirei non finire con un database di righe del profilo non connesso a nessun utente.
si può provare, 'user.update_attributes (profile_attributes: {: id => user.profile.id,: nome: 'some name'})' –