rakeタスクでポスト値にアクセスする際の異常な動作

これは、Ruby(ActiveRecord?)と Rails を介したデータベースとの相互作用の仕組みに対する誤解から来ている可能性がありますが、rake タスクを実行中に奇妙なエラーメッセージが表示されています。

エラーメッセージは、異なる投稿 ID を伴って何回か繰り返されています。例は以下の通りです:

Failed to refresh post (topic_id: , post_id: 46367)

このエラーメッセージは、rake タスク posts:refresh_emails の以下の行から発生しています:

このエラーを引き起こすすべての投稿に共通しているのは、それらの投稿が削除されたトピック内に含まれているという点です。それらに対して何らかの処理を行えないことは完全に予期されることですが、不思議なのは、Rails でその投稿 ID をクエリすると、puts 行が取得に失敗している topic_id が実際に設定されていることが確認できる点です。

[1] pry(main)> Post.where(id: 46367)
=> [#<Post:0x000055e95558ad10
  id: 46367,
  user_id: 3372,
  topic_id: 4225,
  ...
  raw_email:
   "<some valid raw email>",
  ...

コードを少しスキャンしたところ、エラーが発生しそのメッセージが出力される明らかな説明は、290 行目で raw_email も取得できなかった場合のみであり、それにより Email::Receiver の初期化中に例外が発生するというものです。

これは Ruby に不慣れであり、revise() を十分に深く掘り下げていないため、他の理由で例外が発生する他の場所も十分にある可能性があります。

いずれにせよ、なぜこれらの投稿で失敗しているのか少し混乱しています。この rake タスクは、削除されたトピックに属する投稿(最初の投稿を含む)に対して操作できるはずのように思えます。特に、スタッフメンバーがトピックを復元する際に、そのようなタスクが発生したことを知らず、ましてやそれがその特定のトピックには適用されなかったことすら知らない可能性があります。

私の場合は、これらの削除されたトピックに対して何らかの処理を行う必要はなく、それらが復元されることもないと分かっているため、解決策を求めているわけではありません。単に誰かの注意を引きたかっただけです。何か問題があるかもしれませんし、何でもないかもしれません。