[英]run hook if condition with delayed_job
我的控制器上有這份工作:
def action1
#code here
order = Order.find(params[:id])
Delayed::Job.enqueue(ExpiredMessage.new(order), 2, 2.days.from_now)
#code here
end
我在myapp/app/jobs
內部有一個名為expired_message.rb
的文件,其中包含下一個內容:
class ExpiredMessage < Struct.new(:order)
def perform
#code to run here for example order.save
order.any_method
end
end
我只想在if order.status == "PA"
perform method
內的代碼
如何在保存訂單之前運行鈎子以檢查自定義作業上的if order.status == "PA"
?
否則,如果order.status!=“ PA”我想在執行該作業之前刪除該作業。
非常感謝你!
如果要從數據庫檢查對象的狀態,請在其上調用reload
。 否則,只需像檢查其他任何對象一樣對其進行檢查:
def perform
order.any_method if order.reload.status == "PA"
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.