@Fly3110
web developer

Более правильный способ обработки не найденной сущности?

Всем привет!

Есть ли какая-то существенная разница в двух подходах обработки не найденной сущености?
Предположим, что единственное, что надо сделать, если сущность не найдена, это перейти на главную страницу

Способ 1:

entity = Entity.find(params[:id]) rescue redirect_to('/')


Способ 2:

entity = Entity.find_by_id(params[:id])
redirect_to('/') unless entity
  • Вопрос задан
  • 275 просмотров
Решения вопроса 1
c3gdlk
@c3gdlk
Ментор в http://rubyboost.ru/
Всегда должен быть find. А ошибка отлавливается в ApplicationController

unless Rails.application.config.consider_all_requests_local
    rescue_from Exception, with: :respond_with_500

    rescue_from ActiveRecord::RecordNotFound,
                ActionController::RoutingError,
                ActiveRecord::RecordInvalid,
                with: :respond_with_404

    rescue_from ActionController::BadRequest, with: :respond_with_400
  end

def respond_with_404(exception=nil)
    redirect_to root_path
  end
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы