ruby-on-rails – ActiveJob:回调之间的可访问实例变量

我的工作中有以下片段:

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


before_perform do |job|
  # do something
  @car.update(type: 'broken')
end

但是当工作完成时,@ car是零.有可能以某种方式将实例变量从一个回调传递给第二个回调吗?即使只有身份证也没问题.干杯.

最佳答案 您需要使这个实例变量脱离作业并以这种方式访问​​:

class Car < ActiveJob::Base
  attr_accessor :car
end

然后

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

before_perform do |job|
  # do something
  job.car.update(type: 'broken')
end
点赞