我需要保存一个ActiveRecord对象的副本,所以我使用的是:
@original = Model.find(params[:id])
@copy = @original.clone
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将其保存到Postgres时:
PGError:错误:列"id"中的空值违反了非空约束
在控制台中:
@ copy.id
=>无
如何让ActiveRecord不在INSERT语句中发送id列?
更新:
我做了一个小改动后问题就消失了:
@new = Model.new(params[:model])
@original = Model.find(x)
@clone = @original.clone
@new.foreign_key_id = @clone.foreign_key_id
Run Code Online (Sandbox Code Playgroud)
我用最后一行替换了:
@new.foreign_key_id = @original.foreign_key_id
Run Code Online (Sandbox Code Playgroud)
此更改从INSERT语句中删除了"id".在成功完成此更改后,我立即恢复了代码并尝试重现错误.我一直无法重现错误.也许是13日星期五?