Un usuario eliminó todas sus publicaciones, una de las cuales era la publicación “acerca de” de una categoría. Restauramos la publicación y cambiamos la propiedad a la cuenta del Sistema, sin embargo, todavía aparece como “eliminada” para un Administrador y muestra un error cuando un no Administrador visita la publicación:
No estoy seguro si esto funcionará, pero intenta reconstruir el HTML de la publicación. Puedes hacerlo haciendo clic en los 3 puntos → Llave inglesa → “Reconstruir HTML”.
Cuando se usa el botón Eliminar todas las publicaciones en la página de administración del usuario, se elimina el tema “acerca de”. (En otros casos, la propiedad se transfiere a @system)
Podrías crear una nueva categoría y mover todos los temas a esa y eliminar la categoría antigua. Pero eso es más una solución temporal que una corrección.
Aunque acabo de reproducir esto en mi sitio de prueba y al deshacer la eliminación volvió a aparecer, así que no estoy seguro de cuál es este problema en particular.
Es posible intercambiar el topic_id del tema “Acerca de” por uno nuevo usando la consola de Rails, pero la “nueva opción de cambio de categoría” podría ser una opción más fácil a través de la interfaz de usuario.
Es posible que necesite instrucciones paso a paso para asegurarme de que estamos haciendo lo mismo. ¿Parece que el usuario fue eliminado en lugar de solo las publicaciones?
Hay dos problemas que son particularmente desafortunados en combinación.
Cuando usas “eliminar todas las publicaciones” en la página de administración del usuario, la publicación “acerca de la categoría” se elimina. (Pero puedes restaurarla)
Cuando has eliminado publicaciones cuyo autor también ha sido eliminado, y cambias la propiedad antes de restaurar la publicación, no puedes restaurarla. (Como solución alternativa, puedes eliminar el tema y restaurarlo. Esto restaura la primera publicación)
Así que cuando:
creas un usuario de prueba y una categoría de prueba,
haces que el usuario de prueba sea el propietario del tema “acerca de la categoría”,
eliminas todas sus publicaciones desde la página de administración del usuario,
(opcional) creas otro tema propiedad del usuario de prueba,
(opcional) respondes a ambos temas usando un usuario diferente,
eliminas el usuario de prueba,
cambias la propiedad del tema “acerca de” (y el otro tema),
intentas restaurar las publicaciones,
recibes un error, porque no puedes restaurar la publicación. Nota: las respuestas en los temas son visibles para otros usuarios, pero no pueden ver la primera publicación.
Supongo que podríamos crear una nueva categoría y hacer un intercambio, sin embargo, ¿eso significaría que los usuarios que se han suscrito/silenciado/lo que sea de la categoría original necesitarían rehacer eso con la nueva?
No le tengo miedo a la consola de Rails, así que si asignar un nuevo topic_id es la forma más “correcta” de estructurar las cosas, me inclino a hacerlo. Pero agradecería algo de ayuda con los comandos específicos a ejecutar; ¿sería algo como Category.find(10).topic_id = 723…?
Por otro lado:
…¿quizás esta sea una forma más rápida de resolverlo? (Aunque solo veo “Archivar tema” y no “Eliminar tema” en el menú del icono de la llave inglesa…)
No he probado esto tan a fondo como otros aquí (¡gracias!), pero me parece que la solución al problema planteado en la primera publicación es bastante sencilla.
No permitir la eliminación de temas “about” en la administración de usuarios (por moderadores/administradores del sitio)
Cuando se intente lo anterior, impídalo y muestre un mensaje de error informativo. Lo muevo a Bug porque es un error que los temas “about” puedan ser eliminados en el caso anterior.
Acabo de crear un usuario de prueba y lo usé para crear una categoría, y luego eliminé al usuario desde la administración de usuarios. Me permitió eliminar al usuario directamente a pesar de que tenía un tema. ¡La autoría del tema “about” se transfirió al usuario del sistema! Así que al menos ese caso de uso parece ser bastante seguro en este sentido.
También probé el caso de autoeliminación (tengo que degradar al usuario primero para poder ver el botón de eliminar cuenta). La eliminación de ese usuario también transfirió la autoría del tema al sistema. Además, veo que el valor predeterminado para delete user self max post count está establecido en 1, lo que significa que, por defecto, no es posible que un usuario se elimine a sí mismo si tiene más de un tema. Así que de todos modos estamos seguros aquí.
Y probé a eliminar al usuario a través de la administración de usuarios. Curiosamente, mientras solo existía el tema “about”, no obtuve el botón de eliminar publicación. Pero después de crear un segundo tema, sí obtuve el botón de eliminar publicación. Seleccionarlo y escribir el texto largo para confirmar funcionó, pude eliminar las publicaciones del usuario, incluido el tema “about”. ¡Finalmente, una reproducción!
Y finalmente, también pude eliminar el tema “about” usando acciones masivas. ¡Otra reproducción! Oops, ahora veo que no tengo una reproducción de acciones masivas eliminando temas “About”. Simplemente falla en hacerlo de forma silenciosa.
Dado lo anterior, podemos ignorar los casos de eliminación de usuario (a través de la administración de usuarios y autoeliminación) porque la autoría se transfiere al sistema.
También intenté mover la publicación “acerca de” a un tema diferente. Funciona y luego aparece un temporizador de eliminación, pero el tema no se elimina después de x días. El temporizador simplemente desaparece. Así que esto funciona bien.
Dicho esto, ¿cómo debo recuperarme de la situación actual, donde los usuarios ven una página de error al intentar leer la publicación “Acerca de” de esta categoría, a pesar de que la publicación es propiedad del usuario system?
Aún no he intentado nada; esperaba que alguien interviniera con un “sí, ese es el comando correcto” o “no, no hagas eso, arruinará todo”…
@alxndr ¿puedes confirmar que estás autoalojando, no en nuestro alojamiento? Si estás en nuestro alojamiento o cambias a nuestro alojamiento, puedes contactar a nuestro equipo de soporte y uno de nuestros asociados técnicos te ayudará a solucionarlo.
Si yo estuviera en tu posición, simplemente crearía una nueva categoría y movería todos los temas a la nueva categoría. Eso parece lo más sencillo.
Si decides experimentar con la consola de Rails o la API, estás en territorio inexplorado, ¡así que asegúrate de hacer una copia de seguridad completa de tu sitio primero en caso de que necesites revertir el cambio!
Ha Suenas como si no confiaras en mi consejo @tobiaseigen
Usar la API sería una opción más segura que la consola de Rails, simplemente no está claro si recuperaría con éxito este tema en particular dadas las circunstancias.
No estaba seguro de que la API funcionara, ya que intentar algo similar en la interfaz de usuario estaba bloqueado, pero parece que he tenido algo de éxito ().
En este caso, utilicé el endpoint para recuperar la publicación en lugar de recuperar el tema (que es lo que intentaba hacer la opción de restaurar en la publicación):
El botón “restaurar esta publicación” parece utilizar este endpoint, sin embargo, devuelve un error 403, con errorThrown en blanco y textStatus: "error".
Sin embargo, ¿estás diciendo que usar la misma ruta a través de una API, y no la interfaz de usuario web, funcionó?
Según mi prueba, el botón de restaurar estaba intentando usar el endpoint de recuperación de temas (/t/TOPIC_ID/recover) y estaba lanzando el 403. Pero parecía funcionar cuando usé la versión de recuperación de publicaciones en su lugar.
No tengo claro cómo identificar el ID de la publicación individual; el ID de la categoría es 10 y creo que el ID del tema es 723. Actualización: ¡Ajá, lo encontré! Hay un data-post-id en el elemento DOM <article>…
No veo este endpoint en la documentación de la API… ¿debería ser un PUT? ¿con algún dato? Actualización: sí, un PUT, sin datos — ¡funcionó! ¡¡Muchas gracias @JammyDodger!!