Rails update_attributes RecordNotUnique

时间:2013-08-02 21:55:17

标签: ruby-on-rails ruby-on-rails-4

我正在尝试覆盖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多个属性,我必须手动输入,它们可能经常更改。或者还有其他我想念的东西?

1 个答案:

答案 0 :(得分:0)

您可以使用

old_p.update_attributes(new_p.attributes.tap { |h| h.delete('id')})