如何在 ActiveJob 回调方法中获取 Job 属性?
How to get Job attributes in ActiveJob callback methods?
Rails 4.2, active_jobs, callback_methods
在自定义作业的执行方法中,我创建了一条新记录(并将文件上传到 S3)。如何在 after_perform 回调中传递或获取新记录 ID?我想将带有 link 的电子邮件 after_perform 发送到 S3 文档...但是,不确定如何在 after_perform 方法中获取 ID。根据文档,您可以使用 job.attributes,但我得到 'undefined method attributes'.
我可以将邮件程序调用移到执行方法中,但我宁愿使用回调来正确处理它。我不确定如何在执行方法之外访问属性(或这些属性的来源)。
我试图通过将其放在回调中来做一些侦探工作(以确定回调可用的属性):
puts "job: #{ job }"
或
puts "job: #{ job.attributes }"
或
puts "job: #{ job.attributes.first }"
none 有效,所有结果都未定义 'attributes'。
您必须使用 arguments
而不是 attributes
:
after_perform do |job|
record = job.arguments.first
# Do something with the record
end
我的执行方法如下所示:
def perform(record)
# Perform stuff
end
Rails 4.2, active_jobs, callback_methods
在自定义作业的执行方法中,我创建了一条新记录(并将文件上传到 S3)。如何在 after_perform 回调中传递或获取新记录 ID?我想将带有 link 的电子邮件 after_perform 发送到 S3 文档...但是,不确定如何在 after_perform 方法中获取 ID。根据文档,您可以使用 job.attributes,但我得到 'undefined method attributes'.
我可以将邮件程序调用移到执行方法中,但我宁愿使用回调来正确处理它。我不确定如何在执行方法之外访问属性(或这些属性的来源)。
我试图通过将其放在回调中来做一些侦探工作(以确定回调可用的属性):
puts "job: #{ job }"
或
puts "job: #{ job.attributes }"
或
puts "job: #{ job.attributes.first }"
none 有效,所有结果都未定义 'attributes'。
您必须使用 arguments
而不是 attributes
:
after_perform do |job|
record = job.arguments.first
# Do something with the record
end
我的执行方法如下所示:
def perform(record)
# Perform stuff
end