我有大约20个不同的活动作业,现在我意识到每个作业都需要一种before_perform
在控制器的上下文之外设置PaperTrail内容的方法。
我本打算将这种before_perform
方法放在帮助程序中,然后在每个作业中都包含该帮助程序,但是我遇到了一个错误:
MyApp:JobHelpers:Module的未定义方法`before_perform'
我认为这是因为所讨论的模块仅仅是该模块,而不是活动作业。如何避免before_perform
在每个“活动作业”中重复相同的4行方法?
Job_helper:
module MyApp
module JobHelpers
before_perform do |job|
# stuff to do
end
end
end
工作:
require 'my_app/job_helpers'
class TheJob < ActiveJob::Base
include MyApp::JobHelpers
# Do more stuff
end
我使用了included
回调来实现自己的目标。我发现对包含的回调的描述要比我在此处给出的另一个答案更好。
其他答案相似时,请在下面找到对我有用的解决方案:
module MyApp
module JobHelpers
def self.included(job_class)
job_class.before_perform do |job|
# work to be completed
end
end
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句