我有一个用户和嵌套的配置文件类,如下所示:
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'})
只是按预期更新当前配置文件。但在那种情况下,我没有利用 Accept_nested_attributes_for
有谁知道为什么更新会以这种方式发生?我不希望最终得到一个未连接到任何用户的配置文件行数据库。