簡體   English   中英

用delay_job gem執行控制器方法

[英]execute controller method with delayed_job gem

我的控制器中有一個方法,我需要在延遲作業方法中執行:

這是我的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

我想在執行或觸發或觸發self.expire_order(order)方法時執行控制器方法template_expired_order(order)

我該怎么做?

非常感謝你!

您不應將與模型相關的代碼放入控制器中,尤其是要在后台作業中運行它時。 目前尚不清楚template_expired_order的功能,但我建議將其放在Order模型中,並在傳遞給expired_order的訂單上直接調用它。

class Order
  def expire_order(order)
    order.template_expired_order
  end

  def template_expired_order
    # code
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM