El tema sigue siendo eliminado

Esto es lo que he logrado:

  1. El usuario crea un tema.
  2. El usuario elimina la publicación del tema, programando su eliminación (cambié la configuración del sitio delete_removed_posts_after a 1).
  3. El tema se elimina después del tiempo especificado.
  4. El personal deselimina el tema y revierte a la versión original de la publicación (solo restaurar traerá la publicación de nuevo con el mensaje “tema retirado por el autor, se eliminará automáticamente en 1 hora a menos que sea reportado”).
  5. El tema se volverá a eliminar después de algún tiempo.

Lo que está ocurriendo: Cuando un usuario elimina su propia publicación de tema, se establece una propiedad llamada user_deleted en true. Hay un trabajo en segundo plano llamado DestroyOldDeletionStubs que se ejecuta cada 30 minutos. Este trabajo ejecuta la función PostDestroyer.destroy_stubs, que buscará en la base de datos y eliminará cualquier publicación que tenga user_deleted establecido en true junto con un “temporizador de eliminación” vencido.

El problema: Cuando el personal restaura la publicación, user_deleted nunca se establece en false, por lo que la próxima vez que se ejecute DestroyOldDeletionStubs, la publicación se volverá a eliminar.

La solución: Estoy bastante seguro de que necesitaremos agregar alguna lógica a la función staff_recovered que establezca user_deleted en false (user_recovered ya hace esto). Ver discourse/lib/post_destroyer.rb at main · discourse/discourse · GitHub

La solución rápida: Restaura la publicación del tema y obtén su ID de publicación, luego ve a tu consola de Rails y ejecuta:

Post.find_by_id(ID_DE_LA_PUBLICACIÓN).update(user_deleted: false)

El ID de la publicación se puede encontrar fácilmente agregando .json al final de la URL de un tema. Así que usando este tema como ejemplo: https://meta.discourse.org/t/topic-keeps-getting-deleted/128013.json. El ID de la publicación del tema es 632362.

10 Me gusta