У меня есть класс пользователя и вложенного профиля, который выглядит следующим образом:
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
Я не понимаю, почему rails выбрасывает старый профиль и создает новый.
Использование
user.profile.update_attributes({name: 'some name'})
просто обновляет текущий профиль, как и ожидалось. Но в этом случае я не использую accepts_nested_attributes_for
Кто-нибудь знает, почему обновление происходит таким образом? Я бы предпочел не иметь базу данных строк профилей, не связанных ни с одним пользователем.