ActiveJob:回调之间可访问的实例变量

use*_*317 6 ruby-on-rails rails-activejob

我的工作中有以下片段:

before_enqueue do |job|
  # do something
  @car = create_car
end


before_perform do |job|
  # do something
  @car.update(type: 'broken')
end
Run Code Online (Sandbox Code Playgroud)

但当工作执行时@carnil. 是否可以以某种方式将实例变量从一个回调传递到第二个回调?哪怕只是ID也好。干杯。

Aeg*_*gix 2

您需要将其设为实例变量job并以这种方式访问​​:

class Car < ActiveJob::Base
  attr_accessor :car
end
Run Code Online (Sandbox Code Playgroud)

然后

before_enqueue do |job|
  # do something
  job.car = create_car
end

before_perform do |job|
  # do something
  job.car.update(type: 'broken')
end
Run Code Online (Sandbox Code Playgroud)

  • 这真的有效吗?似乎无法让它工作(在 Sidekiq 中) (2认同)