Rails: переименование исключений Mongoid и BSON в мое собственное исключение - PullRequest
4 голосов
/ 27 мая 2011

У меня есть собственный обработчик исключений:

module Frog
  module Errors
    class NotFound < FrogError
      attr_accessor :exception

      def initialize (exception)
        self.exception = exception
      end

      def as_json
        {
          :error => {
            :message => "Object not found"
          }
        }
      end 

      def status_code
        404
      end
    end
  end
end

В application_controller.rb это исключение обрабатывается

rescue_from Frog::Errors::FrogError, :with => :render_frog_error

и

def render_frog_error(exception)
   access_control_headers!
   render :json => exception, :status => exception.status_code
end

В моем проектеу меня есть BSON :: InvalidObjectId и Mongoid :: Errors :: DocumentNotFound исключения.Я хочу создать это исключение самостоятельно.Я пытаюсь так:

rescue_from BSON::InvalidObjectId do 
   |ex| raise Frog::Errors::NotFound.new(ex) 
end

но это не работает.Как я могу восстановить BSON и Mongoid исключение к моему?

1 Ответ

2 голосов
/ 06 июня 2011

Я нашел это решение:

rescue_from BSON::InvalidObjectId, :with => :proxy_exception
rescue_from Mongoid::Errors::DocumentNotFound, :with => :proxy_exception

def proxy_exception(exception)
        exception = Frog::Errors::NotFound.new(exception)
        render_frog_error(exception) 
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...