0
我試圖實現一個ActionMailer函數,它會發送一封簡報給特定的用戶。我想確保通訊只發送給訂閱用戶。我試圖實現它,像這樣:如何退出ActionMailer :: Base功能?
class UserMailer < ActionMailer::Base
def newsletter(user)
return unless user.subscribed # This still renders my mailer view
mail(:to => user.email, :subject => "Newsletter")
end
end
的問題是,return unless user.subscribed
線仍然顯得渲染郵件視圖,並且仍然由調用代碼發送(從cron作業):
task :cron => :environment do
User.where(:subscribed => true).each do |user|
UserMailer.newsletter(user).deliver
end
end
請注意,我的cron作業中也具有該訂閱邏輯,並且出於性能方面的原因(不應該遍歷所有用戶,只有那些訂閱的用戶)。然而,它感覺像UserMailer類是這個邏輯存在的正確的地方(否則任何其他位置調用newsletter
方法將需要檢查subscribed
標誌以及。