Как избежать исключений ActiveRecord:: RecordNotFound при запросе нескольких записей

У меня есть этот код:

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

Но в базе данных существует только запись 1 и 2. Я получаю это исключение:

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

Есть ли способ получить только существующие записи, а не исключение?

Ответы

Ответ 1

Article.find_all_by_id([1,2,3]) - это путь!

Ответ 2

Rails 3+, ruby ​​1.9+ путь:

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

Ответ 3

Проблема заключается в том, что использование find с идентификаторами вызывает исключения, когда записи отсутствуют. Вы можете попробовать что-то вроде

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

или более лаконично

Article.find_all_by_id [1,2,3]

с помощью find :all не вызывает ошибок в отсутствующих записях, поэтому даже если записи отсутствуют, вы классные.