我被引导相信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。
答案 0 :(得分:0)
要抛出404错误,需要
Upload.find_by_id!(params[:id])
惊叹号是神奇的。
答案 1 :(得分:0)
对于我正在使用的Impressionist gem来说,这是一个问题,因为它被挂钩到我的上传显示操作中,并试图在我有机会处理它之前执行它自己的查找。