【问题标题】:How to avoid ActiveRecord::RecordNotFound exceptions when querying multiple records查询多条记录时如何避免 ActiveRecord::RecordNotFound 异常
【发布时间】:2011-04-27 02:08:48
【问题描述】:

我有这个代码:

Article.find([1,2,3])

但数据库中只存在记录12。我得到了这个例外:

"ActiveRecord::RecordNotFound (Couldn't find all Offers with IDs (1,2,3) (found 2 results, but was looking for 3))"

有没有办法只获取现有记录而不获取异常?

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

    Article.find_all_by_id([1,2,3]) 是要走的路!

    【讨论】:

    • Article.find_by_id(1),如果您只是在寻找一个
    • 现在已弃用,请参阅其他答案
    【解决方案2】:

    Rails 3+,ruby 1.9+ 方式:

    Article.where(id: [1,2,3])
    

    【讨论】:

    • 感谢您添加此内容,其他答案有点过时了:)
    • 如前所述 - 这应该是最新版本的 rails 的正确答案。
    【解决方案3】:

    问题在于,当记录丢失时,使用带有 id 的 find 会引发异常。您可以尝试类似

    Article.all :conditions => ["id in (?)", [1,2,3]]
    

    或者更简洁

    Article.find_all_by_id [1,2,3]
    

    使用find :all 不会在丢失记录时引发错误,因此即使记录丢失,您也很酷。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      相关资源
      最近更新 更多