Thema wird ständig gelöscht

Das habe ich herausgefunden:

  1. Benutzer erstellt ein Thema
  2. Benutzer löscht den Themenbeitrag und plant die Löschung (ich habe die Site-Einstellung delete_removed_posts_after auf 1 geändert)
  3. Das Thema wird nach der angegebenen Zeit gelöscht
  4. Mitarbeiter stellen das Thema wieder her und kehren zur ursprünglichen Version des Beitrags zurück (nur die Wiederherstellung bringt den Beitrag zurück mit der Meldung „Thema vom Autor zurückgezogen, wird automatisch in 1 Stunde gelöscht, es sei denn, es wird gemeldet“)
  5. Das Thema wird nach einiger Zeit erneut gelöscht

Was passiert: Wenn ein Benutzer seinen eigenen Themenbeitrag löscht, wird eine Eigenschaft namens user_deleted auf true gesetzt. Es gibt einen Hintergrundjob namens DestroyOldDeletionStubs, der alle 30 Minuten ausgeführt wird. Dieser Job führt die Funktion PostDestroyer.destroy_stubs aus, die die Datenbank durchsucht und alle Beiträge löscht, bei denen user_deleted auf true gesetzt ist und deren „Lösch-Timer“ abgelaufen ist.

Das Problem: Wenn Mitarbeiter den Beitrag wiederherstellen, wird user_deleted nie auf false gesetzt. Daher wird der Beitrag beim nächsten Lauf von DestroyOldDeletionStubs erneut gelöscht.

Die Lösung: Ich bin mir ziemlich sicher, dass wir der Funktion staff_recovered eine Logik hinzufügen müssen, die user_deleted auf false setzt (user_recovered macht dies bereits). Siehe discourse/lib/post_destroyer.rb at main · discourse/discourse · GitHub

Die schnelle Lösung: Stellen Sie den Themenbeitrag wieder her und notieren Sie sich die Beitrags-ID. Gehen Sie dann zu Ihrer Rails-Konsole und führen Sie folgenden Befehl aus:

Post.find_by_id(BEITRAGS_ID).update(user_deleted: false)

Die Beitrags-ID lässt sich leicht finden, indem man .json an das Ende einer Themen-URL anhängt. Als Beispiel: https://meta.discourse.org/t/topic-keeps-getting-deleted/128013.json. Die Beitrags-ID des Themas ist 632362.

10 „Gefällt mir“