Comment supprimer TOUT de mon forum et ne laisser que les utilisateurs ?

C’est de loin la méthode la plus rapide et la plus simple.
Téléchargez votre liste d’utilisateurs comme suggéré par @JammyDodger, depuis /admin/users/list/active, téléchargez le fichier CSV, nettoyez-le pour ne conserver que les adresses e-mail, et effectuez une invitation en masse depuis votre interface d’administration d’une nouvelle installation Discourse. Vos utilisateurs devront recréer un compte.

Si vous voulez supprimer toutes les données sauf certains utilisateurs, il n’y a pas de moyen simple de le faire et je ne peux que penser qu’essayer pourrait facilement conduire à un forum cassé.

Si vous voulez exporter la plupart des données de vos utilisateurs (leurs propres paramètres et autres), ce sera également difficile et nécessitera la création d’un script ruby on rails. De plus, vous pourriez rencontrer des problèmes auxquels je n’ai pas pensé. Si vous n’êtes pas sûr de la manière de procéder, je vous suggère de vous en tenir à la première solution ou de poster dans Marketplace si vous avez un budget.

1 « J'aime »

C’est vrai. Mais si vous voulez vivre dangereusement, vous pouvez essayer ceci :

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

Je pense que la suppression des sujets devrait supprimer les messages, mais vous pourriez aussi ajouter un

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

Le > 1 laissera les sujets créés par le premier utilisateur. Si vous voulez aussi les supprimer, changez-le en > 0, ce qui laissera les sujets créés par @system. Je pense que vous le regretterez amèrement si vous les supprimez.

Cela fait une sauvegarde au cas où cela détruirait tout.

C’est presque certainement une mauvaise idée, mais c’est ce que vous avez demandé.

1 « J'aime »

En effet ! Il existe la classe PostDestroyer pour cela, qui effectue de nombreux nettoyages supplémentaires nécessaires.

@xebiyen vous pouvez utiliser cette tâche rake pour détruire tous les sujets dans toutes les catégories, mais laisser les catégories et les utilisateurs intacts :

$ ./bin/rake destroy:topics_all_categories
4 « J'aime »

Génial, je ne connaissais pas cette tâche rake. Va-t-elle supprimer les sujets « À propos », ce qui serait un effet secondaire indésirable ?

Non, la méthode qu’il utilise laisse ceux-ci tranquilles par défaut, et la tâche rake ne change pas ce défaut :

:rainbow:

1 « J'aime »

Merci de me confirmer cela. Je voulais en être sûr, car une ou deux des méthodes recommandées pour d’autres choses listées sur Administrative Bulk Operations ont eu des effets secondaires indésirables la dernière fois que je les ai utilisées.

J’en ai utilisé une pour déplacer des sujets d’une catégorie à une autre, mais elle a déplacé le sujet “À propos” avec les sujets réguliers. J’ai peut-être utilisé un script Rails au lieu de la tâche Rake, cependant. Je ne suis pas sûr. :thinking:

J’ai également utilisé la méthode Rake « Déplacer tous les sujets avec un tag spécifique vers une seule catégorie », qui n’a pas correctement rempli certaines tables liées aux tags dans la base de données.


edit : oh, c’est mon anniversaire sur le forum ! Si seulement le gâteau était réel… Mais peut-être qu’il l’est ?

2 « J'aime »

Merci ! J’avais oublié cette classe et j’ignorais l’existence de la tâche rake (ou je ne me souviens pas l’avoir oubliée !)

2 « J'aime »

Quelle commande dois-je utiliser avant cette commande ?

@pfaffman @Canapin est-ce que sa commande @leonardo est la meilleure solution alors ?

Vous pouvez essayer par vous-même, mais faites d’abord une sauvegarde.
Allez dans votre dossier discourse en ligne de commande.
Entrez dans le conteneur avec ./launcher enter app.
Ensuite, tapez rake destroy:topics_all_categories.

Voyez-le en action (mon instance de test est très lente) :

4 « J'aime »

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