是否可以有一个只处理特定 Mailer 的邮件观察者?
这样我们就可以有不同的邮件程序 - 邮件观察者对,在他们的邮件发送后共同处理任务。
例如,一个邮件观察者可以删除临时生成的附件,而另一个可以记录某些特定类型的消息(特定邮件程序的)的发送。
如果可能,您能否说明我们如何在邮件程序和邮件观察器类之间建立“连接”?
非常感谢
是否可以有一个只处理特定 Mailer 的邮件观察者?
这样我们就可以有不同的邮件程序 - 邮件观察者对,在他们的邮件发送后共同处理任务。
例如,一个邮件观察者可以删除临时生成的附件,而另一个可以记录某些特定类型的消息(特定邮件程序的)的发送。
如果可能,您能否说明我们如何在邮件程序和邮件观察器类之间建立“连接”?
非常感谢
我发现了一些示例告诉将其放入 config/initializers/ 中的任何文件中:
ActionMailer::Base.register_observer(MyMailObserver)
然而,这是一个全局设置。
我在深入研究api后找到了解决方案。我意识到 register_observer() 是一个类方法,所以我尝试将它应用于我的app/mailer/report_mailer.rb类:
class ReportMailer < ActionMailer::Base
default from: "my_email@my_domaine.com"
def monthly_report(user, report_name, file_name, file_path)
@user = user
@report_name = report_name
attachments[file_name] = File.read(file_path)
mail(:to => user.email, :subject => "Generated report for #{report_name} (automatic message)")
end
end
我设法在config/initializers/my_mailer_observer_initializer.rb中为我的邮件程序初始化我的观察者来应用它:
ReportMailer.register_observer(MyMailObserver)
所以我让 MyMailerObserver 与我的 ReportMailer 类有关,而没有其他 Mailer 类。