find_or_create_by - 当记录存在时,id = nil

时间:2015-06-30 22:14:03

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

我尝试使用ActiveRecord的find_or_create_by方法,我需要返回记录的ID。当此方法创建新记录时,会发生这种情况。但是,如果记录已存在,则ID(以及created_atupdated_at列)为nil。所有其他数据都返回正常。为什么是这样?我可以在我的数据库中看到它,它有一个ID。当我使用find_by获取记录时,将返回ID。这是一个错误还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

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

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

TLDR;如果您使用Model.find_or_create_by(attributes)并使用id: nil的对象,请检查其中的错误,调整属性和编码。