В моем контроллере контроллера я использую 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
терпеть неудачу более изящно, чтобы условная инструкция могла работать?