加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:12:00 所属栏目:百科 来源:网络整理
导读:Rails 4.2,active_jobs,callback_methods 在自定义作业的perform方法中,我创建了一条新记录(并将文件上传到S3).如何在after_perform回调中传递或获取新记录ID?我想发送一封post_perform的电子邮件,其中包含指向S3文档的链接…但是,不知道如何在after_perfor
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读