ruby-on-rails – 如何在ActiveJob回调方法中获取Job属性?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何在ActiveJob回调方法中获取Job属性?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Rails 4.2,active_jobs,callback_methods

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

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

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

puts "job: #{ job }"

要么

puts "job: #{ job.attributes }"

要么

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

这些都没有奏效,而且都导致了未定义的“属性”.

解决方法

您必须使用参数而不是属性
after_perform do |job|
    record = job.arguments.first
    # Do something with the record
end

我的执行方法如下所示:

def perform(record)
    # Perform stuff
end

猜你在找的Ruby相关文章