我尝试使用ActiveRecord的find_or_create_by
方法,我需要返回记录的ID。当此方法创建新记录时,会发生这种情况。但是,如果记录已存在,则ID(以及created_at
和updated_at
列)为nil
。所有其他数据都返回正常。为什么是这样?我可以在我的数据库中看到它,它有一个ID。当我使用find_by
获取记录时,将返回ID。这是一个错误还是我错过了什么?
答案 0 :(得分:1)
我知道这是一个老问题,但我遇到了同样的问题,这是一个非常简单的用户错误。
如果找不到所选属性的持久对象,则对象的id
将为nil
,但无法完全创建(初始化并保存到数据库),因为它没有通过验证。
TLDR;如果您使用Model.find_or_create_by(attributes)
并使用id: nil
的对象,请检查其中的错误,调整属性和编码。