Nil vs RecordNotFound查询失败

时间:2013-04-21 21:13:19

标签: sql ruby-on-rails ruby-on-rails-3 activerecord

当我这样做时

User.find_by_username('some_user')

并且无法找到用户上面的查询返回nil。然而,

User.find(1)
如果找不到用户,

会抛出ActiveRecord :: RecordNotFound错误。导轨说这应该发生,但不能解释原因。这是我的问题,为什么有两种不同的行为?谢谢!

1 个答案:

答案 0 :(得分:2)

仅当找不到具有给定id的记录时才会引发ActiveRecord :: RecordNotFound。

如果您在按ID搜索时不想要例外,可以使用:

User.find_by_id('foo')

与我不同的是:

  1. User.find:给我那个用户。
  2. User.find_by_foo('foo'):有没有foo == foo的用户?
  3. 第一个(1)假设您的记录存在,因此失败应该引发异常。

    第二个(2)假设您要查询记录的存在,以便将记录结果丢失为零。