我是一名尝试使用delayed_job的NOOB。
我希望在使用延迟作业成功发送邮件后更新用户模型。
发送电子邮件:
UserMailer.delay.welcome_email(user)
如果邮件成功发送,请执行以下操作:
User.update_attributes(:emailed => true)
如何在成功发送电子邮件后获得回叫或触发器?
答案 0 :(得分:10)
您需要创建一个Job对象,而不是调用#delay
帮助器。您可以使用success
挂钩来执行回调。
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)