Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 当记录存在时,按-id=nil查找或创建_Postgresql_Ruby On Rails 4_Activerecord - Fatal编程技术网

Postgresql 当记录存在时,按-id=nil查找或创建

Postgresql 当记录存在时,按-id=nil查找或创建,postgresql,ruby-on-rails-4,activerecord,Postgresql,Ruby On Rails 4,Activerecord,我正在尝试使用ActiveRecord的find\u或\u create\u by方法,我需要返回记录的ID。当此方法创建新记录时,会发生这种情况。但是,如果记录已经存在,则ID(以及在中创建的列和在中更新的列)为nil。所有其他数据都返回得很好。为什么会这样?我可以在数据库中看到它,它有一个ID。当我使用find\u by获取记录时,会返回ID。这是一个bug还是我遗漏了什么?我知道这是一个老问题,但我也遇到了同样的问题,这是一个非常简单的用户错误 如果未找到所选属性的持久化对象,则对象的id

我正在尝试使用ActiveRecord的
find\u或\u create\u by
方法,我需要返回记录的ID。当此方法创建新记录时,会发生这种情况。但是,如果记录已经存在,则ID(以及在中创建的
列和在
中更新的
列)为
nil
。所有其他数据都返回得很好。为什么会这样?我可以在数据库中看到它,它有一个ID。当我使用
find\u by
获取记录时,会返回ID。这是一个bug还是我遗漏了什么?

我知道这是一个老问题,但我也遇到了同样的问题,这是一个非常简单的用户错误

如果未找到所选属性的持久化对象,则对象的
id
将为
nil
,但无法完全创建(初始化并保存到数据库),因为它未通过验证


TLDR;如果您使用
模型。通过(属性)
查找或创建对象,最后得到一个id为
nil
的对象,检查该对象上的错误,调整属性,并愉快地编码。

您能显示控制台输出吗?这不应该发生。