小编mat*_*don的帖子

克隆的ActiveRecord对象在保存期间向Postgres发送空id

我需要保存一个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日星期五?

postgresql activerecord ruby-on-rails

1
推荐指数
1
解决办法
1681
查看次数

标签 统计

activerecord ×1

postgresql ×1

ruby-on-rails ×1