Possible Duplicate:
Model.find(1) gives ActiveRecord error when id 1 does not exist

如果数据库中没有id为1的用户,try User.find(1)将引发异常.

这是为什么?

推荐答案

因为正如RDoc中所指出的,这是架构师想要找到(id)的工作方式:

按id查找-可以是特定id(1)、id列表(1、5、6)或id数组([5、6、10]).如果无法找到所有列出的ID的记录,则会引发RecordNotFound.

如果您不想引发异常,请使用find_by_id,如果找不到具有指定id的对象,它将返回nil.您的示例将是User.find_by_id(1).

Ruby-on-rails相关问答推荐

ActiveAdmin:的呈现索引表在父级的显示页中有许多资源

Puma 工作人员无法在 Ubuntu 20.04 VM 上的 Rails 5.2 中启动

`ActionController::API` 祖先类在加载后不会更新

Rails:当 id 方法为非标准时构建关联

NoMethodError:Puma::Events:Class 的未定义方法字符串

ViewModel 和 Controller 有什么区别?

显示每个 rspec 示例的运行时

将日期时间转换为月、日和年?

Rails - 按连接表数据排序

Rails 将字符串与视图中的变量连接的最佳方法

rake assets:precompile try 连接到数据库

如何在 Ruby 字符串中返回最后一个斜杠(/)之后的所有内容

我如何存根 find_each 以在 rails 3 中进行 rspec 测试

在 Ruby on Rails 上,我们如何在控制器中打印调试信息?

bundle和gem安装的区别?

Ruby on Rails 中的MySQL 服务器已经消失

如何在 VS Code 中自动格式化 Ruby 或 .erb 文件?

为什么 Google Oauth 在我的 Rails 应用程序中返回无效的 redirect_urI?

在 Rails 3 中设置会话超时

rails路由中资源和资源之间的区别?