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 ?
This would be the cleanest way to delete the posts:
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
This will essentially act as if the System user deleted each post by hand using the delete button on the post. I included skip_staff_log so you don’t pollute your staff logs, but you can remove that if you’d prefer to have the action logged.