Restaurar un tema largo que ha sido eliminado

En nuestros foros, tuvimos un tema largo con más de 300 publicaciones sobre un cliente de desarrollo web comercial y, por alguna razón, ese tema completo desapareció hace unos días después de mover algunas publicaciones a otro tema.

Revisé el registro de actividad del usuario y no había ninguna entrada que indicara que ese tema ahora “faltante” hubiera sido eliminado o editado. La única acción fue que algunas publicaciones (alrededor de 10) se movieron a un nuevo tema.

Hoy, revisé la base de datos de Discourse y descubrí que todas las 306 publicaciones estaban allí, pero cuando verifiqué el topic_id en esas 306 publicaciones, el tema con ese ID estaba vacío [].

Digamos que el registro del tema faltante era el topic_id “300000” en los registros de las publicaciones.

Cuando ejecuté esto en la consola, estos fueron los resultados:

> Topic.with_deleted.where(id: 300000)
> []
> Post.where(topic_id:300000).count
> 306

Restauré todas estas 306 publicaciones a un nuevo tema; creando un tema “falso” (marcador de posición) en la interfaz de Discourse y luego cambiando todos los topic_id de las publicaciones “huérfanas” al nuevo topic_id del marcador de posición, de la siguiente manera:

Digamos que el nuevo tema creado (el tema falso) tiene el id: 304000, entonces:

Post.where(topic_id: 300000).update_all(topic_id: 304000)

Esto funcionó y restauró las 306 publicaciones al nuevo ID de tema marcador de posición/falso.

Luego, simplemente edité el título del nuevo tema y todo se ve bien; y como no teníamos ningún enlace a este tema largo y privado, no hubo preocupación por romper enlaces con un nuevo ID de tema, así que todo está bien.

No tengo idea de por qué el registro del tema estaba vacío y todas las publicaciones con ese ID de tema estaban intactas. Los registros y los logs no muestran ninguna acción (eliminación, edición) en ese tema. La única acción en ese tema fue mover un puñado de publicaciones a un nuevo tema, pero eso no debería haber “anulado” el registro del tema.

Dado que no puedo repetir esto (y no estoy seguro de lo que sucedió), no lo reporté como un “error”; en su lugar, esperé hasta que tuve tiempo hoy, hice algunas investigaciones y descubrí que las 306 publicaciones habían perdido su tema padre “alguien”; pero esta técnica las restauró a todas.

Si hubiera querido preservar el ID de tema original, habría intentado restaurar el registro del tema original, pero esto parece ser un poco más de trabajo; así que simplemente asigné las 306 publicaciones “sin tema” a un nuevo tema, y los resultados, como era de esperar:

> Post.where(topic_id:304000).count
> 307

Espero que esto ayude a cualquiera que pueda encontrarse con una situación similar en el futuro.

2 Me gusta