4

我正在尝试向我的 Rails 应用程序中的几个邮件程序之一添加一个拦截器。尽管我试图只在一个邮件程序上注册它,但它似乎正在拦截来自两者的电子邮件。这是我如何尝试仅注册一个 Mailer 的一些示例代码。

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

Mailer1.register_interceptor(MailInterceptor)

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

4

1 回答 1

2

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

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
于 2017-04-21T13:09:03.207 回答