0

遅延ジョブメソッド内で実行する必要があるメソッドがコントローラー内にあります。

これは私のorder controller actionです:

class OrdersController < ApplicationController

 def create
  #code here
  order = Order.first
  Order.delay(queue: "order", priority: 1, run_at: 2.minutes.from_now).expire_order(order)
 end

 def template_expired_order(order)
  #code here
 end

end

これは私のorder model:

class Order
  include Mongoid::Document
  include Mongoid::Timestamps::Created
  .
  .
  .
  #delayed jobs method
  def self.expire_order(order)
   #code here
  end
end

メソッドが実行されたり、トリガーされたり、起動されたりしtemplate_expired_order(order)たときにコントローラーメソッドを実行したい。self.expire_order(order)

どうすればいいですか?

どうもありがとうございました!

4

1 に答える 1

1

特にバックグラウンド ジョブで実行する場合は、モデル関連のコードをコントローラーに配置しないでください。template_expired_order が何をするのかは明確ではありませんが、Order モデルに入れて、expired_order に渡される注文で直接呼び出すことをお勧めします。

class Order
  def expire_order(order)
    order.template_expired_order
  end

  def template_expired_order
    # code
  end
end
于 2012-10-08T11:30:18.970 に答える