我正在尝试覆盖 rails 4.0 中的记录。
old_p.update_attributes(new_p.attributes)
old_p
是从数据库中提取的new_p
记录,是用户创建的将替换数据库中的记录的记录。new_p
实际上在数据库中有自己的记录,但只是暂时存储在那里。
这似乎在某些时候有效,但大多数时候它会返回
ActiveRecord::RecordNotUnique in Controller#overwrite
PG::UniqueViolation: ERROR: duplicate key value violates unique constraint
这是从 rails 2 升级而来的,当它是 rails 2 应用程序时,它似乎一直在按预期工作。关于 update_attributes 的文档似乎很少,但似乎它也在复制对象的 id。
我稍后也尝试过使用 .save 的 assign_attributes,但效果相同。
如果它也在复制对象的 id,有没有办法轻松地忽略 id?由于记录有大约 20 多个属性,我必须手动输入,并且它们可能会经常更改。还是我还缺少其他东西?