我在 Rails 3 中有一个工作邮件。
我想在邮件方法中有一些逻辑来决定是否通过电子邮件发送它。我不能在邮件之外有这个逻辑,因为我使用Delayed_job
延迟。我将电子邮件延迟了一个小时。如果条件不满足,我会发送电子邮件。
1.有没有办法进入mailer方法,不完成发送(优雅)
2.有没有更好的方法来实现我正在尝试的东西?
代码示例
这是邮件
class MessagesMailer < ActionMailer::Base
def message_notification(user, message)
@user = user
@msg = message
mail(to: @user.email, from: "#{@msg.sender.name} <me@myapp.com>", subject: "You have recieved a new message from #{@msg.sender.name}")
end
end
MessagesMailer.delay(:run_at => 5.minutes.from_now).message_notification(@user, @message)
在整个应用程序中被调用,特别是从MessagesController
我想检查是否@user
已经阅读了该消息。如果是这样,请不要发送电子邮件。
Delay_job
将message_notification
在 5 分钟内执行,但是一旦该方法完成,无论其中发生什么,都会发送电子邮件。
有没有办法在有条件的情况下取消交货(@user
阅读消息)?