简单的 model 关系如下:
class Parent < ActiveRecord::Base
has_one :child
accepts_nested_attributes_for :child
end
class Child < ActiveRecord::Base
belongs_to :parent
end
Parent 只有一个 name 字段,Child 有 name 和 parent_id 字段(注:在 rails 5.0.01 下 Parent 和 Child 继续的是 ApplicationRecord)
在 rails 4.2.7 版本下,下面的代码可以保存两个新的关联对象:
params = {parent: {name: 'jack', child_attributes: {name: 'raose'}}}
Parent.create!(params[:parent])
但在 rails5.0.01 下失败了,异常为: ActiveRecord::RecordInvalid: Validation failed: Child parent must exist
不过,如果先创建一个 Parent 对象,再 update 就可以保存 child 到数据库了,如下:
p = Parent.create(name: 'jack0000')
p.update params[:parent]
请问高手,为什么在 5.0.0.1下只能 update,不能 create 了??