标题说:当使用assign_attributes
作为嵌套模型时,它似乎使嵌套模型的先前设置字段无效,即使它们未包含在指定的参数中。
class Person < ActiveRecord::Base
has_one :employee
end
class Employee < ActiveRecord::Base
belongs_to :person
accepts_nested_attributes_for :person
end
e = Employee.new
e.build_person
e.person.kind = :employee
e.assign_attributes(person_attributes: { name: 'John Doe' })
e.person.attributes
# {"id"=>nil, "kind"=>nil, "name"=>"John Doe"}
出于结构原因,build_person
并指定kind
应该在assign_attributes
来电之前进行,因此之后只需设置它就不是一种选择。
这是一个错误吗?有办法解决这个问题吗?
答案 0 :(得分:1)
诀窍是使用
e.assign_attributes { ... }, update_only: true