3
У меня есть следующий фрагмент в моей работе:ActiveJob: Доступный переменного экземпляр между обратными вызовами
before_enqueue do |job|
# do something
@car = create_car
end
before_perform do |job|
# do something
@car.update(type: 'broken')
end
но когда работа выполняется @car
является nil
. Можно ли каким-либо образом передать переменную экземпляра из одного обратного вызова во второй? Даже только ID
будет в порядке. Приветствия.
Является ли это класс работы? Для чего нужна работа? То, что вы называете работой (угадывая не автомобиль), обычно передается в работу, как показано здесь. http://edgeapi.rubyonrails.org/classes/ActiveJob/Callbacks/ClassMethods.html Но если вы создали класс задания, вы можете создать переменную экземпляра в классе, которая используется в других методах/перехватах (просто переместите ' @ car' до уровня в области. – user3366016
Вы не можете иметь переменные экземпляра, разделяемые между enqueueing и выполнением, поскольку фрагменты кода могут работать на совершенно разных серверах. В любом случае все, что вы пытаетесь достичь, кажется немного антиактивным так как вы делаете вещи, которые должны относиться к методу процесса задания в обратном вызове. Вы не должны делать дорогие и подвергать ошибкам вещи в обратных вызовах, так как будет чрезвычайно сложно отслеживать – bcd