2012-08-27 28 views
2

我认为,导致Object.find和Object.find_by_id之间的不同之处在于发现将引发RecordNotFound例外,如果没有被发现,而find_by_id直接返回零。Rails的Find_by_id产生异常

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

的ActiveRecord :: RecordNotFound在UploadsController#显示

找不到与ID上传= 59

请求

个参数:

{ “ID”=> “59”}

下面是代码行多数民众赞成搞乱:

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

我使用的Rails 3.1.3。

+0

这很奇怪。我在控制台尝试过并且工作。但我正在使用rails v 3.2。 – MurifoX

+0

它也适用于我的控制台,而不是在应用程序本身。 – Noz

回答

0

原来这是我使用的Impressionist gem的一个问题,因为它被挂钩到我的Upload show操作中,并试图在我有机会处理它之前执行它自己的查找。

0

抛404错误,它需要

Upload.find_by_id!(params[:id]) 

的惊叹号是神奇的。

+3

这并没有真正回答原来的问题,所以我不能回复,但它确实回答了我自己的问题,这导致我在这里 - “我如何获得'find_by_id'来募集?”。谢谢 – Nick

+0

@尼克哈哈。原来的问题是什么?只是回头看看它,我真的没有看到一个...... – kayluhb

+0

我想他试图问为什么他用'find_by_id'得到一个异常,因为它不应该提高。 – Nick