【问题标题】:Rails Find_by_id raises exceptionRails Find_by_id 引发异常
【发布时间】:2012-08-22 08:13:31
【问题描述】:

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

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

ActiveRecord::RecordNotFound in UploadsController#show

找不到 id=59 的上传

请求

参数:

{"id"=>"59"}

这是搞砸的代码行:

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

我使用的是 Rails 3.1.3。

【问题讨论】:

  • 这很奇怪。我在控制台中尝试并工作。但我使用的是 rails v 3.2。
  • 它也可以在我的控制台中使用,只是不能在应用程序本身中使用。

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


【解决方案1】:

要抛出404错误,需要是

Upload.find_by_id!(params[:id])

感叹号就是魔法。

【讨论】:

  • 这并没有真正回答最初的问题,所以我不能投票,但它确实回答了我自己的问题,导致我来到这里 - “我如何让find_by_id 提出?”。谢谢
  • @尼克哈哈。最初的问题是什么?只是回头看了看,我真的没有看到......
  • 我想他是想问为什么他得到了 find_by_id 的例外,因为它不应该引发。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2014-10-25
    • 2014-04-04
    • 1970-01-01
    相关资源
    最近更新 更多