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 ?
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.
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.