Comment supprimer en masse les anciens murmures

Suite à la discussion issue de Opérations de masse administratives :

Je cherche un moyen de supprimer les messages privés (whispers) dépassant un certain âge dans tous les sujets.

Généralement, nous utilisons les messages privés pour discuter d’actions potentielles de modération, mais une fois l’action entreprise, ces messages deviennent moins utiles et finissent par créer du bruit au fil du temps.

Je pourrais supprimer les publications dépassant un certain âge avec post_type=4 (whisper), mais cela semble pouvoir laisser des éléments en suspens ou incohérents dans la base de données, ou être interdit en raison des clés du forum.

Existe-t-il une méthode sûre pour procéder ainsi ?

2 « J'aime »

Voici la méthode la plus propre pour supprimer les publications :

whispers = Post.where(post_type: 4).where("created_at < ?", 1.year.ago)

whispers.find_each do |w|
  PostDestroyer.new(Discourse.system_user, w, skip_staff_log: true).destroy
  putc "."
end

Cela revient essentiellement à ce que l’utilisateur Système supprime manuellement chaque publication en utilisant le bouton de suppression. J’ai inclus skip_staff_log pour éviter de polluer vos journaux d’administration, mais vous pouvez le retirer si vous préférez que l’action soit enregistrée.

Pensez-vous que cela répondra à vos besoins ?

4 « J'aime »

Je pense que c’est parfait — merci !

Je vais essayer sur une instance de test et voir combien de temps cela prend, car nous avons probablement plusieurs milliers de chuchotements !!!

2 « J'aime »

Donc cette tâche fonctionne bien, merci… mais les murmures sont simplement réduits et restent visibles par les administrateurs et les modérateurs une fois développés.

Cela nettoie les sujets, mais j’espérais qu’ils puissent être complètement supprimés dans leur intégralité. Je me suis demandé si tous les murmures pouvaient être déplacés vers un nouveau sujet, puis supprimés ou cachés aux modérateurs, du moins. Mais ensuite, j’ai trouvé ceci : Is there a way to remove all the deleted/hidden posts? et plus récemment : Why is it not possible to permanently delete topics or posts?

Malheureusement, les liens ci-dessus suggèrent qu’il n’existe aucun moyen de supprimer définitivement les données :frowning: