ActiveJob を作成し、実行ブロックが ActiveRecord オブジェクトの単一インスタンスであると予想される引数を受け入れる場合、ジョブがキューに入れられると問題のオブジェクトが存在しますが、実際の実行時にはそのオブジェクトは存在しなくなります。 、仕事は明らかに失敗しますよね?
MyJob < ActiveJob::Base
def perform(widget)
# do some stuff to widget
end
end
したがって、ActiveJob が元の ActiveRecord オブジェクトをインスタンス化できないために失敗したこのジョブは、失敗し続けます。失敗のループを止めるために、ジョブに対してどのような更新を行うことができますか。へのフックを検討しましbefore_perform
たが、まだ道が見えていません。
当面の問題を解決する以外に、私がここで学んだもう 1 つのことはwidget_id
、ActiveRecord オブジェクトではなく整数を渡す方がよいということです。その後、実行ブロック内から問題のウィジェットがまだ存在するかどうかを確認できたはずです。