質問があまりにも初歩的でしたら、あらかじめお詫び申し上げます。
Discourseデータベース(プラグイン経由)へのアクセス権があります。
テスト中に大量に作成した投稿をクエリを使って削除することは可能でしょうか?
delete from posts where id in (123, 567, ... など)
このような操作を実行しても安全でしょうか?
質問があまりにも初歩的でしたら、あらかじめお詫び申し上げます。
Discourseデータベース(プラグイン経由)へのアクセス権があります。
テスト中に大量に作成した投稿をクエリを使って削除することは可能でしょうか?
delete from posts where id in (123, 567, ... など)
このような操作を実行しても安全でしょうか?
Data Explorer プラグイン経由でデータベースにアクセスしている場合、そのプラグインは読み取り専用クエリのみを許可します。データベースへの書き込みはできません。
Rails コンソールから投稿を完全に削除することは可能ですが、推奨されません。最も良い方法は、Data Explorer プラグインを使用して削除したい投稿を見つけ、Discourse のユーザーインターフェースで利用可能なツールを使って投稿を削除することです。
何らかの理由でこの方法がご自身に合わない場合は、お知らせください。Rails コンソールから投稿を削除する方法の詳細をご案内します。
このエンジンに詳しくありませんが、おそらく安全ではないと思います。なぜなら、その方法では posts テーブルからのエントリのみが削除され、1 つの投稿には他のテーブルに関連付けられたエントリや、その post_id にリンクされた多くのメタ情報が存在する可能性があるからです。後々、何かが破損するかもしれません。したがって、投稿削除には統合されたツールを使用すべきです。
ニコライさん、ありがとうございます。
私もそう思います。でも、突然このアプリケーションの真の専門家が登場して、「自由に削除してください!」と言うかもしれませんね)))
ただし、どの専門家もそれが許容されるとは言っていません:
この機能を要求した誰も開発していないのは、それが難しすぎるか、開発コストに見合わないためです。
これらの点の例については、以下のトピックをご覧ください:
自分自身を専門家と呼ぶつもりはありませんが、長年にわたりファイルやコードを多数確認し、分析し、試行してきました。
それらの経験から、自分一人で localhost 以上のことをするには知識が不足していると確信しています。見たもの、そして見ていないものが、私に慎重さを促しています。
「ON DELETE CASCADE」を一度も見たことがありません。その代わり、多くのモデルファイルで「has_many」「dependent:」「Indexes」「ensure_consistency」を頻繁に見かけます。また、以下のジョブファイルもあります:discourse/app/jobs/scheduled/ensure_db_consistency.rb at main · discourse/discourse · GitHub
個人的には、Discourse が大好きですが、コアの保護策の範囲外で行われた行為の結果まで処理するとは期待していません。つまり、私は自分のコードをしばしば壊してしまいますが、それが起きた際は完全に責任を取ります。それが私です。しかし、まだ気づいていないコアコードがどこかにある可能性も確かにあります。
また、
ただし、OP のケースではそれは無意味でしょう。