Подтвердить что ты не робот

Получить модель или 404 на Rails

Можно ли использовать функцию get_by_id_or_404 на рельсах. Например, в моем контроллере я использую:

@destination = Destination.find_by_id(params[:id])

Если идентификатор не установлен или адресат не найден, как я могу попросить Rails перенаправить на страницу 404?

Спасибо!

4b9b3361

Ответ 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.