フォーラムからすべてを削除してユーザーだけを残す方法

それが圧倒的に最も速く簡単な方法です。
@JammyDodger が提案したように、/admin/users/list/active からユーザーリストをダウンロードし、CSVファイルをダウンロードして、メールアドレスのみを残すようにクリーニングし、新しいDiscourseインストールから管理インターフェースで一括招待を行います。ユーザーは再度アカウントを作成する必要があります。

一部のユーザーを除くすべてのデータを削除したい場合、簡単な方法はありません。また、試みてもフォーラムが壊れる可能性があることしか考えられません。

ユーザーのほとんどのデータ(ユーザー自身の設定など)をエクスポートしたい場合も同様に困難であり、Ruby on Railsスクリプトの作成が必要になります。また、私が考えていない問題に直面する可能性もあります。その方法がわからない場合は、最初の解決策にとどめるか、予算がある場合は#marketplaceに投稿することをお勧めします。

「いいね!」 1

その通りです。しかし、危険を冒したいのであれば、これを試すことができます。

./launcher enter app
discourse backup
rails c
Topic.where("user_id > 1").destroy_all
Upload.where("user_id > 1").destroy_all
exit
exit

トピックを削除すると投稿も削除されるはずですが、次を追加することもできます。

 Post.where("user_id > 0").destroy_all

> 1 は最初のユーザーによって作成されたトピックを残します。それらも削除したい場合は、> 0 に変更してください。これにより @system によって作成されたトピックが残ります。それらを削除すると、非常に後悔すると思います。

これは、すべてを削除した場合のバックアップを作成します。

これはほぼ間違いなく悪い考えですが、あなたが求めたものです。

「いいね!」 1

まったくその通りです!そのために PostDestroyer クラスがあり、多くの必要な追加クリーンアップを実行します。

@xebiyen は、すべてのカテゴリのすべてのトピックを削除するために、この rake タスクを使用できますが、カテゴリとユーザーはそのまま残ります。

$ ./bin/rake destroy:topics_all_categories
「いいね!」 4

素晴らしい、このrakeタスクを知りませんでした。「About」トピックを削除しますか?それは望ましくない副作用になります。

いいえ、使用されているメソッドはデフォルトでそれらをそのままにしており、rake タスクはそのデフォルトを変更しません。

:rainbow:

「いいね!」 1

これを確認していただきありがとうございます。確信したかったのです。なぜなら、Administrative Bulk Operations に記載されている他の操作のための推奨方法の 1 つか 2 つは、前回使用したときに意図しない副作用があったからです。

トピックをあるカテゴリから別のカテゴリに移動するために 1 つ使用しましたが、通常のトピックと一緒に「トピックについて」も移動してしまいました。ただし、レールスクリプトを使用した可能性があり、Rake タスクではありませんでした。確信が持てません。:thinking:

また、「特定のタグが付いたすべてのトピックを単一のカテゴリに移動する」Rake メソッドを使用しましたが、これはデータベース内の タグ関連のテーブルの一部が正しく入力されませんでした


編集: ああ、私のケーキデーです!ケーキが本物だったら… でも、もしかしたら本物なのかもしれませんね?

「いいね!」 2

ありがとうございます!そのクラスのことを忘れていましたし、rakeタスクについても知りませんでした(または忘れたことを覚えていませんでした!)

「いいね!」 2

このコマンドの前にどのコマンドを使用しますか?

@pfaffman @Canapin は彼のコマンド @leonardo が最善の解決策ですか?

自分で試すこともできますが、まずバックアップを取ってください。
コマンドラインでdiscourseフォルダに移動します。
./launcher enter appでコンテナに入ります。
次にrake destroy:topics_all_categoriesと入力します。

実際の動作を見る(私のテストインスタンスは非常に遅いです):

「いいね!」 4

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.