当我这样做时
User.find_by_username('some_user')
并且无法找到用户上面的查询返回nil。然而,
User.find(1)
如果找不到用户,会抛出ActiveRecord :: RecordNotFound错误。导轨说这应该发生,但不能解释原因。这是我的问题,为什么有两种不同的行为?谢谢!
答案 0 :(得分:2)
仅当找不到具有给定id的记录时才会引发ActiveRecord :: RecordNotFound。
如果您在按ID搜索时不想要例外,可以使用:
User.find_by_id('foo')
与我不同的是:
第一个(1)假设您的记录存在,因此失败应该引发异常。
第二个(2)假设您要查询记录的存在,以便将记录结果丢失为零。