1

我正在尝试记录我们系统发送的所有电子邮件。我使用此博客在 ActionMailer::Base 中设置了一个回调以供参考:http ://www.javier-julio.com/2013/03/29/using-callbacks-in-rails-3-actionmailer 。

我正在尝试保存记录所使用的 actionmailer 对象和消息传递后调用的方法的记录。我可以访问mailandmessage对象。

include AbstractController::Callbacks

after_filter :log_email

def log_email
  klass = ActiveSupport::Inflector.underscore(self.class.name)
  SystemEmail.create(user: User.find_by_email(message.to), key: "#{klass}.#{message.template_name}" )
end

但是,从 Rails3 开始,template_name 并没有公开,而且我还没有找到一种方法来访问正在调用的邮件程序方法。如何找到已调用的邮件操作?

4

1 回答 1

2

您可以使用action_name,因此您的方法将是:

def log_email
  klass = ActiveSupport::Inflector.underscore(self.class.name)
  SystemEmail.create(user: User.find_by_email(message.to), key: "#{klass}.#{action_name}" )
end
于 2013-09-16T22:07:08.897 回答