在引入 strong params
之前它工作正常。
因此,在使用 new
创建新对象并传递属性时,id
被设置为 nil
。
但是现在,当我从现有对象 obj1 的属性创建新对象 obj2 时,
obj1 的id
(主键)也被复制到 obj2。
喜欢,
obj2 = Post.new obj1.attributes
因此,当我尝试保存它时出现问题,
obj2.save
ActiveRecord::RecordNotUnique
错误。由于两个对象具有相同的 ID。
我有几个具有相同用例的模型,所以如果我使用 dup
或 except
,我必须在每个案例中添加相同的内容。
最佳答案
如果你想在一个新对象中复制你的属性,你必须使用以下(特定于 ActiveRecord):
obj2 = obj1.dup
这使得 id
、(created|updated)_(at|on)
不被复制。还要记住,父关联在新对象中仍然存在。
关于ruby-on-rails - 从 rails 中的另一个对象的属性创建一个新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48640075/