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