2

我被引导相信 Object.find 和 Object.find_by_id 之间的区别在于 find 会引发RecordNotFound异常,而 find_by_id 如果什么也没找到,则简单地返回 nil 。

但是,在我的 Rails 3 应用程序中,如果我尝试使用伪造的 id 搜索我的 Uploads 模型,我会得到:

在 UploadsController#show 中的 ActiveRecord::RecordNotFound

找不到 id=59 的上传

要求

参数:

{"id"=>"59"}

这是搞砸的代码行:

@upload = Upload.find_by_id(params[:id])

我正在使用 Rails 3.1.3。

4

2 回答 2

0

要抛出 404 错误,它需要是

Upload.find_by_id!(params[:id])

感叹号是魔法。

于 2012-08-27T20:14:29.563 回答
0

事实证明,这是我正在使用的印象派 gem的一个问题,因为它被挂接到了我的 Upload show 操作中,并在我有机会处理它之前尝试执行它自己的查找。

于 2012-08-27T20:22:47.733 回答