Canapin
(Coin-coin le Canapin)
2022 年 12 月 8 日午後 2:17
21
xebiyen521:
しかし、招待されるのでしょうか?
それが圧倒的に最も速く簡単な方法です。
@JammyDodger が提案したように、/admin/users/list/active からユーザーリストをダウンロードし、CSVファイルをダウンロードして、メールアドレスのみを残すようにクリーニングし、新しいDiscourseインストールから管理インターフェースで一括招待を行います。ユーザーは再度アカウントを作成する必要があります。
xebiyen521:
それらを同じに保ちたい、招待はしたくありません。
一部のユーザーを除くすべてのデータを削除したい場合、簡単な方法はありません。また、試みてもフォーラムが壊れる可能性があることしか考えられません。
ユーザーのほとんどのデータ(ユーザー自身の設定など)をエクスポートしたい場合も同様に困難であり、Ruby on Railsスクリプトの作成が必要になります。また、私が考えていない問題に直面する可能性もあります。その方法がわからない場合は、最初の解決策にとどめるか、予算がある場合は#marketplaceに投稿することをお勧めします。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2022 年 12 月 8 日午後 2:58
22
その通りです。しかし、危険を冒したいのであれば、これを試すことができます。
./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
leonardo
(Leonardo Mosquera)
2022 年 12 月 8 日午後 5:29
23
Jay Pfaffman:
これはほぼ間違いなく悪い考えです
まったくその通りです!そのために PostDestroyer クラスがあり、多くの必要な追加クリーンアップを実行します。
@xebiyen は、すべてのカテゴリのすべてのトピックを削除するために、この rake タスクを使用できますが、カテゴリとユーザーはそのまま残ります。
$ ./bin/rake destroy:topics_all_categories
「いいね!」 4
Canapin
(Coin-coin le Canapin)
2022 年 12 月 8 日午後 10:42
24
素晴らしい、このrakeタスクを知りませんでした。「About」トピックを削除しますか?それは望ましくない副作用になります。
leonardo
(Leonardo Mosquera)
2022 年 12 月 8 日午後 10:50
25
いいえ、使用されているメソッドはデフォルトでそれらをそのままにしており、rake タスクはそのデフォルトを変更しません。
class DestroyTask
def initialize(io = STDOUT)
@io = io
end
def destroy_topics(category, parent_category = nil, delete_system_topics = false)
c = Category.find_by_slug(category, parent_category)
descriptive_slug = parent_category ? "#{parent_category}/#{category}" : category
return @io.puts "A category with the slug: #{descriptive_slug} could not be found" if c.nil?
if delete_system_topics
topics = Topic.where(category_id: c.id, pinned_at: nil)
else
topics = Topic.where(category_id: c.id, pinned_at: nil).where.not(user_id: -1)
end
@io.puts "There are #{topics.count} topics to delete in #{descriptive_slug} category"
topics.find_each do |topic|
@io.puts "Deleting #{topic.slug}..."
first_post = topic.ordered_posts.first
if first_post.nil?
return @io.puts "Topic.ordered_posts.first was nil"
「いいね!」 1
Canapin
(Coin-coin le Canapin)
2022 年 12 月 8 日午後 11:16
26
これを確認していただきありがとうございます。確信したかったのです。なぜなら、Administrative Bulk Operations に記載されている他の操作のための推奨方法の 1 つか 2 つは、前回使用したときに意図しない副作用があったからです。
トピックをあるカテゴリから別のカテゴリに移動するために 1 つ使用しましたが、通常のトピックと一緒に「トピックについて」も移動してしまいました。ただし、レールスクリプトを使用した可能性があり、Rake タスクではありませんでした。確信が持てません。
また、「特定のタグが付いたすべてのトピックを単一のカテゴリに移動する 」Rake メソッドを使用しましたが、これはデータベース内の タグ関連のテーブルの一部が正しく入力されませんでした 。
編集: ああ、私のケーキデーです!ケーキが本物だったら … でも、もしかしたら本物なのかもしれませんね?
「いいね!」 2
pfaffman
(Jay Pfaffman)
2022 年 12 月 9 日午前 12:54
27
ありがとうございます!そのクラスのことを忘れていましたし、rakeタスクについても知りませんでした(または忘れたことを覚えていませんでした!)
「いいね!」 2
xebiyen
(xebiyen521)
2022 年 12 月 9 日午後 1:01
29
Canapin
(Coin-coin le Canapin)
2022 年 12 月 9 日午後 1:52
30
自分で試すこともできますが、まずバックアップを取ってください。
コマンドラインでdiscourseフォルダに移動します。
./launcher enter appでコンテナに入ります。
次にrake destroy:topics_all_categoriesと入力します。
実際の動作を見る(私のテストインスタンスは非常に遅いです):
「いいね!」 4
system
(system)
クローズされました:
2023 年 1 月 8 日午後 1:53
31
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.