Ruby:基类上下文中的Execute方法

时间:2015-09-15 15:04:36

标签: ruby-on-rails ruby-on-rails-4 paper-trail-gem rails-activejob

我有大约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

2 个答案:

答案 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