3

約 20 の異なるアクティブなジョブがあり、それぞれが controller のコンテキスト外で PaperTrail コンテンツbefore_performを設定するメソッドを必要としていることに気付きました。

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
4

2 に答える 2

2

目的の目標を達成するためにincludedコールバックを使用しました。ここで別の回答で提供できるよりも、含まれているコールバックのより良い説明を見つけました。

他の答えは似ていましたが、以下で私にとってうまくいった解決策を見つけてください:

module MyApp
  module JobHelpers
    def self.included(job_class)
      job_class.before_perform do |job|
        # work to be completed  
      end
    end
  end
end
于 2015-09-18T09:58:33.537 に答える