【问题标题】:find_or_create_by - id = nil when record existsfind_or_create_by - 当记录存在时 id = nil
【发布时间】:2015-06-30 22:14:02
【问题描述】:

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

【问题讨论】:

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

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


【解决方案1】:

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

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

TLDR;如果您使用Model.find_or_create_by(attributes) 并最终得到一个具有id: nil 的对象,请检查其上的错误,调整您的属性,并愉快地编码。

【讨论】:

    猜你喜欢
    • 2017-05-04
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多