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 に答える