Q&Aサービスを運営しています。管理者ができることの1つは、質問をオフトピックとしてマークすることです。彼らがそうするとき、彼らの電子メールが話題から外れていることを彼らに告げる質問をした人に電子メールが送られます。
電子メール通知はdelayed_jobを介して送信されます。
QuestionMailer.delay.notify_asker_of_offtopic_flag question
ただし、場合によっては、誰かが誤って質問をオフトピックとしてマークしたり、気が変わったりすることがあります。最初に質問した人に誤った通知が届くのを防ぐために、短い遅延を作成し、メーラー要求が実行されたときに質問がまだトピックから外れているかどうかを評価します。
メーラーへの遅延呼び出し:
QuestionMailer.delay(run_at: Time.now + 3.minutes).notify_asker_of_offtopic_flag(question)
メーラー:
class QuestionMailer
...
def notify_asker_of_offtopic_flag question
if question.offtopic?
# do mailing
end
end
end
残念ながら、これはそれほど単純ではありません。if
ブロックによってエラーが発生し、delayed_jobがジョブを何度も再試行するためです。
QuestionMailer
私は現在、同じ目的を達成するためにいくつかのかなり回り道の方法を試していますが、エラーをトリガーせずにアクションを中止する方法を本当に見つけたいと思います。これは可能ですか?