0

我的控制器上有这项工作:

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

perform method我只想执行里面的代码if order.status == "PA"

如何在保存订单之前运行挂钩以检查if order.status == "PA"我的自定义作业?

否则,如果 order.status != "PA" 我想在执行此作业之前删除该作业。

非常感谢你!

4

1 回答 1

1

如果您想从数据库中检查对象的状态 - 调用reload它。否则,只需像检查任何其他对象一样检查它:

def perform
  order.any_method if order.reload.status == "PA"
end
于 2013-01-14T18:05:34.393 回答