如何在模型中使用ExceptionNotifier?

时间:2010-05-20 11:41:13

标签: ruby-on-rails exception-handling

我的一个模型中有一个交易。当出现问题时,我希望收到通知。

如果它是控制器中的交易,我只会这样做:

begin
  (my transaction...)
rescue => exception
  ExceptionNotifier.deliver_exception_notification(exception, self, request, data)
end

但是我想在我的模型中做类似的事情,将nils作为self传递而request没有帮助。我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

在我们的项目中,我们使用它的方式不同:

对于model,我们在project_directory / config / initializers中创建一个初始化器以将其添加到 ActiveRecord的::基地。

class ActiveRecord::Base
  include ExceptionNotifiable
end

执行此操作时,所有模型异常都将根据我们的配置调用ExceptionNotifier电子邮件。

对于控制器,我们将它包含在ApplicationController中,因此如果任何控制器中存在异常,我们将收到一封电子邮件。

class ApplicationController < ActionController::Base

  include ExceptionNotifiable

  .....
end

对于控制器中的交易,我会这样做:

class MyController < ApplicationController

  .....
  def create

    MyModel.transaction do
      .....
    end

  end
end

如果不抢救异常,将自动调用ExceptionNotifier。

希望它有所帮助。