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
标志以及。