我有大约20种不同的Active Jobs我现在意识到每种方法都需要一个before_perform
方法来设置PaperTrail content outside the context of the controller。
我计划将这个before_perform
方法放在帮助器中,然后在每个作业中包含帮助器,但是我收到错误:
未定义的方法`before_perform' for MyApp:JobHelpers:Module
我认为这是因为有问题的模块只是一个模块,而不是活动作业。如何避免在每个活动作业中重复相同的4行before_perform
方法?
Job_helper:
module MyApp
module JobHelpers
before_perform do |job|
# stuff to do
end
end
end
The_job:
require 'my_app/job_helpers'
class TheJob < ActiveJob::Base
include MyApp::JobHelpers
# Do more stuff
end
答案 0 :(得分:3)
像这样重写你的助手:
module MyApp
module JobHelpers
extend ActiveSupport::Concern
included do
# inside this you can call ActiveJob helpers
before_perform do
# stuff to do
end
end
end
end
答案 1 :(得分:2)
我使用included
callback来达到我想要的目标。我找到了一个更好的描述包含的回调,而不是我在另一个回答here中给出的。
虽然其他答案相似,但请找到适用于我的解决方案:
force: true