我的控制器里面有一个方法,我需要在延迟作业方法中执行:
这是我的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)
。
我该怎么做?
非常感谢!
答案 0 :(得分: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