ruby-on-rails - rake 任务上的 ActionMailer 循环每次运行时都会发送一封额外的邮件
问题描述
我想不通,我有这门课
class UserMailer < ActionMailer::Base
def apps_remainder_email()
#apps array ..which basically have 3 records in it
apps.each do |rec||
mail(to: user.email, subject: 'Apps Remainder').deliver
end
end
end
当我尝试在 Rails 控制台中调用上述内容时,UserMailer.apps_remainder_email
它工作正常并发送了三封电子邮件,但是当我将其添加为 rake 任务时,它会发送四封而不是三封,即始终是最终电子邮件的副本。
这是我的 rake 任务
task daily: [:environment] do
UserMailer.apps_remainder_email.deliver
end
我认为这是因为我的任务中有一个 .deliver ,但没有那个 .deliver 根本就没有邮件发送。
$ rake daily --trace
** Invoke daily (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute daily
解决方案
你的UserMailer
班级不应该自己打电话deliver
。
相反,您的 rake 任务应该调用deliver
.
因此deliver
,从UserMailer
类中删除并将逻辑放入您的 rake 任务中:
task daily: [:environment] do
apps.each do |rec||
UserMailer.apps_remainder_email(rec).deliver
end
end
推荐阅读
- javascript - 如何在 Angular 本地存储中定位单个对象值?
- bash - redis 集群仅使用 2 个节点而不是 4 个节点
- react-native - onPress 事件不适用于 MapboxGL.MarkerView
- azure - Azure AD 中敏感应用的附加 MFA
- java - 我无法让我的方法数学在我的 java 程序的主类中工作
- javascript - 使用“react-router-transition”模块在过渡期间允许重叠
- excel - DT_NUMERIC 和 DT_DECIMAL 之间有什么区别吗?
- android - 如何移动滚动工具栏 hideTo android?
- reactjs - TypeError:无法分配给对象'#的只读属性'item'