在介绍strong params
之前,它运作良好。
因此,在使用new
创建新对象并传递属性时,id
被设置为nil
。
但是现在,当我创建一个新对象时,来自现有对象的obj2,obj1的属性,
obj1的 id
(主键)也被复制到obj2。
像,
obj2 = Post.new obj1.attributes
因此,当我尝试保存时出现问题,
obj2.save
出现ActiveRecord::RecordNotUnique
错误。由于两个对象都具有相同的ID。
我有几个具有相同用例的模型,因此如果我使用dup
或except
,我必须在每种情况下添加相同的内容。
答案 0 :(得分:3)
如果要在新对象中制作属性的副本,则必须使用以下(特定于ActiveRecord):
obj2 = obj1.dup
这样就不会复制id
,(created|updated)_(at|on)
。还要记住,父关联与新对象一样存在。
答案 1 :(得分:2)