仅在一个邮件程序中在Rails中注册Mailer拦截器

时间:2012-06-27 20:07:30

标签: ruby-on-rails actionmailer

我正在尝试将拦截器添加到我的Rails应用程序中的几个邮件程序之一。即使我试图只在一个邮件程序上注册它,它似乎拦截了两者的电子邮件。下面是一些示例代码,说明我是如何尝试注册一个Mailer的。

class Mailer1 < ActionMailer::Base; end
class Mailer2 < ActionMailer::Base; end

Mailer1.register_interceptor(MailInterceptor)

是否可以只关注一个邮件?谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

您可以做的是仅在特定邮件程序上应用拦截器:

class SpecificMailerInterceptor
  FILTERED_MAILERS = %w(SpecificMailer)

  def self.delivering_email(message)
    return if deliver?(message)

    message.perform_deliveries = false
  end

  def self.deliver?(message)
    # If you are in the other mailers always deliver message
    return true unless FILTERED_MAILERS.include?(message.delivery_handler.to_s)
    # Apply interceptor logic here       
  end
end