Сначала вам нужно определить свое пользовательское исключение:
class API::Unauthorized < StandardError
attr_reader :code
def initialize(code)
super
@code = code
end
end
Затем в вашем APIController используйте rescue_from , поэтому добавьте следующее:
rescue_from StandardError, :with => :exception_handler
def exception_handler(exception)
if exception.is_a? API::Unauthorized
render json: { status: 401, message: "Authentication issue", code: exception.code }, status: unauthorized
end
end
Теперь вы можете генерировать разные коды исключений в зависимости от вашей реализации:
raise API::Unauthorized.new(1000)