如何在活动作业回调方法中获取作业属性



Rails 4.2, active_jobs, callback_methods

在自定义作业的执行方法中,我创建了一个新记录(并将文件上传到 S3)。 如何在after_perform回调中传递或获取该新记录 ID? 我想after_perform发送电子邮件,其中包含指向 S3 文档的链接...但是,不确定如何在after_perform方法中获取 ID。 根据文档,您可以使用job.attributes,但我得到"未定义的方法属性"。

我可以将邮件程序调用移动到 execute 方法中,但 Id 而是使用回调正确处理它。 我不确定如何在执行方法之外访问属性(或这些属性的来源)。

我试图通过将其放在回调中来做一些侦探工作(以确定回调可用的属性):

 puts "job: #{ job }"

puts "job: #{ job.attributes }"

puts "job: #{ job.attributes.first }"

这些都不起作用,并且都导致了未定义的"属性"。

你必须

使用arguments而不是attributes

after_perform do |job|
    record = job.arguments.first
    # Do something with the record
end

我的执行方法如下所示:

def perform(record)
    # Perform stuff
end

最新更新