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

标签 ruby-on-rails ruby ruby-on-rails-3 delayed-job

我是一个尝试使用 delayed_job 的 NOOB。

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

发送邮件:

UserMailer.delay.welcome_email(user)

如果邮件发送成功,请执行以下操作:

User.update_attributes(:emailed =>  true)

邮件发送成功后如何回调或触发?

最佳答案

您需要创建一个 Job 对象而不是调用 #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)

关于ruby-on-rails - 成功发送延迟作业电子邮件后更新用户表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7173446/

相关文章:

arrays - 给定一个大小为 y 的数组,其中包含大小为 n 的数组,我如何使用 Ruby 返回所有逻辑组合?

ruby-on-rails-3 - 在Rails 3中使用带有carreirwave的MiniMagick进行图像裁剪时出错

ruby-on-rails - 列 "pg_search_***"必须出现在 GROUP BY 子句中或用于聚合函数中

ruby-on-rails - Rails RABL if else 语句

ruby-on-rails - 在 RABL 模板中,如何舍入一些数字而不舍入其他数字?

ruby - 使用 rvm 安装 ruby​​ 头文件

ruby-on-rails - rails - activerecord SELECT TOP 1 field_name * FROM table_name

ruby-on-rails - 在 Ubuntu VPS 上单独运行 RoR

ruby-on-rails - Rails 批量构建和保存

ruby-on-rails - 如何通过 capistrano 3 运行自定义 rake 任务?