Rails всегда вызывает исключение ActiveRecord :: RecordNotFound при использовании метода find
.Методы find_by_*
, однако, возвращают nil
, когда запись не найдена.
Документация ActiveRecord сообщает нам:
RecordNotFound - запись не была полученак методу поиска.Либо строка с указанным идентификатором не существует, либо строка не соответствует дополнительным ограничениям.Некоторые вызовы find не вызывают это исключение, сигнализируя о том, что ничего не найдено, для получения более подробной информации обратитесь к его документации.
Если вы хотите вернуть nil
, когда записи не могут быть найдены, просто обработайтеИсключение составляют следующие:
begin
my_record = Record.find params[:id]
rescue ActiveRecord::RecordNotFound => e
my_record = nil
end