Кастомные исключения при спасении выдают ошибку имени? - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь поднять мои исключения в службе в рельсах.

Но когда я спасаюсь с конкретным именем исключения, мне выдается nameError для вызванного исключения.

status": 500,
"error": "Internal Server Error",
"exception": "#<NameError: uninitialized constant Api::V1::UsersController::CustomExceptions>",
"traces": {

Файл исключений:

module CustomExceptions
  class EmptyObject < StandardError; end
  class WrongParams < StandardError; end
  class Unauthorized < StandardError; end
end

Исключение повышено:

class UsersService
class << self
    include AuthenticationHelper
    def find_users(current_user, query_params)          
        users = User.where(some query)
        if users.count > 0
            users
        else
            raise CustomExceptions::EmptyObject, "empty user object returned"
        end
    end
end
end

спасение в контроллере:

 rescue CustomExceptions::EmptyObject => error
  render json: {error: 'No users found'}, status: 404
end

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Поскольку вы определяете CustomExceptions, поэтому Rails ожидает, что вы определите этот класс в файле custom_exceptions.rb.

Чтобы вызвать CustomExceptions, вам следует переименовать имя файла.

0 голосов
/ 25 апреля 2018

Похоже, ваши пространства имен немного запутаны. Один из способов убедиться, что вы используете верхнее пространство имен и не разрешать ему искать в UserService исключение, - это использовать ::, чтобы явно сказать, что вы хотите использовать верхний уровень:

raise ::CustomExceptions::EmptyObject, "empty user object returned"
...