Ich suche nach einer Möglichkeit, Flüstern über ein bestimmtes Alter hinweg aus allen Themen zu löschen.
Im Allgemeinen nutzen wir Flüstern, um potenzielle Moderatoraktionen zu besprechen. Sobald Maßnahmen ergriffen wurden, sind die Flüstern jedoch weniger nützlich und werden mit der Zeit zunehmend zu Rauschen.
Ich könnte Beiträge über ein bestimmtes Alter mit post_type=4 (Flüstern) löschen, aber dies könnte dazu führen, dass Dinge in der Datenbank hängen bleiben oder inkonsistent sind, oder es könnte aufgrund von Forumsschlüsseln nicht erlaubt sein.
Dies wäre der sauberste Weg, um die Beiträge zu löschen:
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
Dadurch wird im Wesentlichen so getan, als hätte der System-Benutzer jeden Beitrag manuell über die Löschschaltfläche auf dem Beitrag gelöscht. Ich habe skip_staff_log hinzugefügt, damit Ihre Mitarbeiter-Protokolle nicht verschmutzt werden, aber Sie können dies entfernen, wenn Sie lieber möchten, dass die Aktion protokolliert wird.
Diese Aufgabe funktioniert also gut, danke schön… aber die Flüsternachrichten werden lediglich zusammengeklappt und sind für Administratoren und Moderatoren nach wie vor einsehbar, wenn sie ausgeklappt werden.