В моем контроллере контроллера я использую Date.new
для создания объекта даты, который будет передан в мой ActiveRecord.
end_range = Date.new(params[:year].to_i, params[:month].to_i, params[:day].to_i).end_of_day.to_formatted_s(:db)
Проблема с этим выше заключается в том, что если пользователь попытался изменить параметры в URL-адресе вручную, например, введя 40
для параметра дня, Date.new
завершится неудачно (как и ожидалось). Тем не менее, я бы предпочел не иметь ошибку 500, если пользователь набрал что-то подобное, а вместо этого ошибку 404 (потому что на самом деле вы никогда не сможете получить запись с днем 40
).
Я пробовал различные условные выражения (if
и unless
операторы) до raise ActiveRecord::RecordNotFound
, если это не удалось, но он возвращает ошибку 500 до запуска условного выражения (и, следовательно, никогда не возвращает 404).
Кто-нибудь знает лучший способ справиться с этим или способ более изящного сбоя Date.new
для выполнения условного оператора?