0

我在 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_jobmessage_notification在 5 分钟内执行,但是一旦该方法完成,无论其中发生什么,都会发送电子邮件。

有没有办法在有条件的情况下取消交货(@user阅读消息)?

4

0 回答 0