Ruby on rails 成功发送延迟作业电子邮件后更新用户表

Ruby on rails 成功发送延迟作业电子邮件后更新用户表,ruby-on-rails,ruby,ruby-on-rails-3,delayed-job,Ruby On Rails,Ruby,Ruby On Rails 3,Delayed Job,我是一个试图处理延迟工作的笨蛋 我想在使用延迟作业成功发送邮件后更新用户模型 发送电子邮件: UserMailer.delay.welcome_email(user) 如果邮件发送成功,请执行以下操作: User.update_attributes(:emailed => true) 成功发送电子邮件后,如何获得回调或触发器?您需要创建作业对象,而不是调用\delay帮助程序。您可以使用successhook执行回调 class WelcomeEmailJob < Struct

我是一个试图处理延迟工作的笨蛋

我想在使用延迟作业成功发送邮件后更新用户模型

发送电子邮件:

UserMailer.delay.welcome_email(user)
如果邮件发送成功,请执行以下操作:

User.update_attributes(:emailed =>  true)

成功发送电子邮件后,如何获得回调或触发器?

您需要创建作业对象,而不是调用
\delay
帮助程序。您可以使用
success
hook执行回调

class WelcomeEmailJob < Struct.new(:user_id)
  def perform
    UserMailer.welcome_email(user)
  end

  def success(job)
    user.update_attribute(:emailed, true)
  end

  private

    def user
      @user ||= User.find(user_id)
    end
end

Delayed::Job.enqueue WelcomeEmailJob.new(user.id)
类WelcomeEmailJob
哇,看起来棒极了。我要试一试。谢谢西蒙妮,这真是太棒了。