【问题标题】:Why does ActiveRecord have this idiosyncrasy?为什么 ActiveRecord 有这种特质?
【发布时间】:2011-04-19 22:11:32
【问题描述】:

以下查询引发异常:

User.find(4)

而以下查询返回 nil:

User.find(:first, :conditions => "id = 4")

当找不到记录时,数据库包装器通常会返回“nil”或“null”等,还是会引发异常?添加“first”关键字有什么特别之处吗?这是预期的行为还是 rails 的魔法失败了?

【问题讨论】:

    标签: ruby-on-rails database activerecord


    【解决方案1】:

    这样想:

    在第一个示例中,您告诉 Active Record 在用户表中查找 ID 为 4 的记录,并且它必须存在。

    在第二个示例中,您将走很长一段路并告诉它“请搜索 id 属性等于 4 的记录,如果有,则返回第一个”。这就是它不会返回任何内容的原因。

    更短的方法是使用find_by_id

    【讨论】:

    • 好的,非常感谢。这就说得通了。第一个示例假定记录存在,我们只是在查找它。
    • @Rein:我想知道怎么做。
    • 并非如此。我得到+1了吗?太棒了。
    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    相关资源
    最近更新 更多