古いスレッドの大量削除

こんにちは、

当社のフォーラムには、削除したい無数の古い・廃止されたトピックが存在します。適切な方法を探すためにメタを検索しましたが、適切な解決策は見つかりませんでした。
トピック ID のリストを反復処理し、削除したい各トピックの deleted_at フラグをセットするだけでは不十分でしょうか、それともより良い方法がありますか?これはかなり手抜きな解決策だと承知しています。
バッチ削除のために Topic.destroy を利用するための追加(小規模な)プラグインを作成するのは、少しオーバーヘッドが大きいように思います。

よろしくお願いいたします、
サシャ

追伸
コンテキスト:これらのトピックはクロール問題やソフト 404 を引き起こしており、検索エンジンから非表示にしたいと考えています。削除されたトピックは、当社のサイトマップから除外されます。

単にリストから外すだけではいかがでしょうか?そうすればインデックスに登録されなくなります。

これは一度だけ行うのか、それとも定期的に行うのでしょうか?

こんにちは、

はい、それらのページをリストから外し、インデックス登録されないようにしたいと考えています。
これは一度だけ行う予定です。今後、クロール問題を引き起こすような「不具合のある」トピックや投稿が発生した場合は、手動で対応します。

当社のフォーラムは非常に古く(1996 年開始)、何度も移行を繰り返しており、生テキストなどに奇妙な古い構文が残っています。2015 年以前に作成され、閲覧数が 1000 回未満で、Google Search Console で「不具合あり」として表示されているトピックをすべて収集しました。

これらのトピックを単に削除フラグを立てるだけでも構いませんが、deleted_at を直接設定することが適切かどうか、あるいは考慮すべき依存関係があるかどうかについては確信が持てていません。プログラムによる対応を行うべきかどうか、ご教示ください。

削除したい場合は、topic.delete を呼び出すことをお勧めします。依存関係がある場合も、これにより処理されます。

アドバイスありがとうございます!もしそれらのトピックを完全に削除することにした場合は、SQL クエリで deleted_atvisible=false を設定します。その後、30 日後に Sidekiq ジョブによってそれらのトピックが削除されます。

しかし、それらのトピックを保持する必要がある場合は、ご提案いただいた通り、topic.delete を使用する小さな Ruby スニペットで「削除」処理を行います。

どちらの場合でも、最終的には Discourse 自体がそれらのトピックを処理するため、依存関係の問題も適切に処理されるはずです。

大変ありがとうございました!