2013-04-05 51 views
1

是否有可能只處理特定郵件的郵件觀察器?是否有可能只處理特定郵件的郵件觀察者?

因此,我們可能會有不同的郵件發送者 - 郵件觀察者對在發送郵件後一起處理任務。

例如,一個郵件觀察員可以刪除臨時生成的附加文件,而另一個可以記錄發送特定類型郵件(特定郵件程序)的消息。

如果有可能,你能說明我們如何使郵件程序和郵件觀察程序類之間的「連接」起作用嗎?

非常感謝

回答

4

我發現了一些例子,告訴將此放入任何文件中的配置/初始化/:

ActionMailer::Base.register_observer(MyMailObserver) 

然而,這是一個全球性的設置。

我在挖掘到api後發現瞭解決方案。 我意識到register_observer()是一個類的方法,所以我試圖把它在我的應用程序/郵件/ report_mailer.rb類:

class ReportMailer < ActionMailer::Base 
    default from: "[email protected]_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 

我設法與我的觀察者的初始化應用它我郵件中配置/初始化/ my_mailer_observer_initializer.rb

ReportMailer.register_observer(MyMailObserver) 

所以我和我的ReportMailer類,沒有其他梅勒類的關係得到了MyMailerObserver。

+0

這不適合我。所有郵件程序都會觸發觀察者。 https://stackoverflow.com/questions/44902707/register-an-observer-to-only-one-mailer – 2017-07-04 10:00:09

相關問題