Rails Find_by_id引发异常

时间:2012-08-27 20:02:31

标签: ruby-on-rails-3 exception activerecord impressions

我被引导相信Object.find和Object.find_by_id之间的区别在于find会引发 RecordNotFound 异常,而如果找不到任何内容,find_by_id只返回nil。

然而,在我的Rails 3应用程序中,如果我尝试使用伪造的ID搜索我的上传模型,我会得到:

  

上传控件中的ActiveRecord :: RecordNotFound#show

     

找不到上传ID = 59

     

请求

     

参数:

     

{ “ID”=> “中59”}

以下是破解代码的行代码:

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

我正在使用Rails 3.1.3。

2 个答案:

答案 0 :(得分:0)

要抛出404错误,需要

Upload.find_by_id!(params[:id])

惊叹号是神奇的。

答案 1 :(得分:0)

对于我正在使用的Impressionist gem来说,这是一个问题,因为它被挂钩到我的上传显示操作中,并试图在我有机会处理它之前执行它自己的查找。