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