【发布时间】:2021-03-23 19:07:56
【问题描述】:
我正在发送一些关于Order 更新通知的电子邮件。该订单有很多OrderInstructions,对于每个创建的OrderInstruction,我都会发送一封包含所有相关信息的电子邮件。
以下是我为每个订单说明发送电子邮件的方式:
UserMailer.order_updated(order_instruction.id).deliver_later
在创建order_instruction 之后调用它,在发送电子邮件之前的一些步骤。 mailer 方法检查订单指令是否存在:
def order_updated(order_instruction_id):
order_instruction = OrderInstruction.find_by(id: order_instruction_id)
return if order_instruction.nil?
...
end
我的问题是这不是发送电子邮件,因为它没有找到order_instruction,但是如果我使用一个小的延迟来调用邮件:
UserMailer.order_updated(order_instruction.id).deliver_later(wait: 5.seconds)
效果很好。
我错过了什么吗?如果我引发错误,有没有办法让 ActionMailer 在一段时间后重试?或者,让 ActionMailer 等待所有电子邮件发送的时间,这样就不必在每次出现这种情况时都解决这个问题。
【问题讨论】:
标签: ruby-on-rails actionmailer