Получить модель или 404 на Rails
Можно ли использовать функцию get_by_id_or_404 на рельсах. Например, в моем контроллере я использую:
@destination = Destination.find_by_id(params[:id])
Если идентификатор не установлен или адресат не найден, как я могу попросить Rails перенаправить на страницу 404?
Спасибо!
Ответы
Ответ 1
В режиме производства Rails автоматически сохраняет исключение ActiveRecord::RecordNotFound
, создавая страницу ошибки 404.
Просто используйте версию поиска, которая поднимает ActiveRecord::RecordNotFound
, когда результат не найден.
@destination = Destination.find_by_id!(params[:id])
Однако в вашем случае нет оснований использовать метод find_by
. Просто отмените find
.
@destination = Destination.find(params[:id])
Ответ 2
Это от руководство:
Вы можете указать восклицательный знак (!) в конце динамических искателей, чтобы заставить их поднять ошибку ActiveRecord:: RecordNotFound, если они не возвращают никаких записей, таких как Client.find_by_name! ( "Ryan" )
Когда это произойдет, Rails отобразит страницу 404 для вас. Кроме того, просто используйте find
в качестве ярлыка для find_by_id
:
@destination = Destination.find!(params[:id])
Ответ 3
Я думаю, что в производстве он поднимет ошибку и отобразит 404 у.е. 500.