これは私が達成しようとしているものです: ユーザーとして、私はクラスのためのスポットを予約することができます。クラスがすでに満員の場合、私は待機リストに載っています。新しいスポットが利用可能になると、私は電子メールを受け取ります。その後、アプリは24時間待機するバックグラウンドジョブを開始します。私が24時間前に出席していることを確認していない場合、それは待機リストの次の人に帰され、24時間前にも確認する必要があります。別のジョブからジョブを開始
問題は、リストの次の人にスポットを渡すときです。私は既に「タイマージョブ」に入っているので、次の人と再度呼び出す必要があります。
class TimerJob
def perform(user_id)
send_confimation_email
if #didn't confirm before 24h
TimerJob.perform(next_user_on_list_id)
else
# save his spot
end
end
end
最初のジョブが正常に動作し、それは、電子メールを送信し、24時間以内に確認を待ち、その後、リスト上の次の人に別の電子メールを送信しますが、別の仕事(5行目)を起動しません。したがって、24時間待ってからプロセスを再開することはできません。
だから、私の例のように、仕事の中で仕事を呼び出すにはどうすればいいですか? これが機能しない理由はありますか?
これを複雑にしすぎて、新鮮な目で簡単に解決できますか?
私はジョブ内からmodule
を呼び出すと考えました。これは、基本的にジョブを呼び戻すことになります。しかし、ここで同じ、動作しませんでした。 入力があれば幸いです。
サイドキックを使用していますか? – Jayaprakash
@Jayaprakashはい私は –
これを試すことができますか? "TimerJob.new.perform(next_user_on_list_id)"または "TimerJob。perform_async(next_user_on_list_id)" – Jayaprakash