是否可以拥有一个只处理特定邮件程序的邮件Observer?
这样我们就可以拥有不同的邮件程序 - 邮件 - 观察者对,它们在邮件发送后一起处理任务。
例如,一个mail-obser可以删除临时生成的附加文件,而另一个可以记录发送某些特定类型的消息(特定邮件程序)。
如果有可能,你能举例说明我们如何使邮件与邮件观察者类之间的“连接”有效吗?
非常感谢
答案 0 :(得分:4)
我找到了一些示例告诉将其放入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类。