Hoy he ocultado de la lista y eliminado algunos temas de la categoría Sin categoría, y ahora la página principal de la lista de categorías muestra “-11 en total” para esa categoría.
Al pensarlo, la mayoría de los temas que eliminé habían sido ocultados de la lista previamente. Me pregunto si eso es relevante; tal vez ocultar de la lista y eliminar por separado resta 1 al conteo por tema.
¿Se corregirá esto automáticamente (con el tiempo o cuando ocurra algún evento)?
Sí, ese es el problema. Puedo reproducir el error en mi sitio de prueba. Ocultar un tema de la lista lo elimina de las estadísticas de temas de su categoría. Si luego eliminas el tema ocultado, se vuelve a restar de las estadísticas de temas de su categoría. Esto significa que ocultar de la lista y luego eliminar un solo tema se cuenta como la eliminación de dos temas de las estadísticas.
Discourse ejecuta un trabajo en segundo plano de CategoryStats una vez cada 24 horas. Cuando se ejecute ese trabajo, las estadísticas de tu categoría deberían corregirse. Si tienes acceso a la consola de rails de tu sitio y no quieres esperar a que se ejecute el trabajo, puedes ejecutar el comando manualmente con:
Category.update_stats
Lo probé en mi propio sitio. Ejecutar ese comando solucionó el problema para mí.
Resulta que para reproducir el problema, debes ocultar un tema, esperar aproximadamente 24 horas a que se ejecute el trabajo de estadísticas de la categoría y luego eliminar el tema. Esto hará que el tema haya sido eliminado dos veces de las estadísticas de la categoría. Después de otras 24 horas, el trabajo de estadísticas de la categoría se habrá ejecutado nuevamente. Eso debería resolver el problema.
La razón por la que esto ocurre es que eliminar un tema lo elimina inmediatamente de las estadísticas de la categoría. Ocultar un tema no provoca que se elimine de las estadísticas hasta que se ejecute el trabajo diario para actualizar las estadísticas de la categoría; ese trabajo verifica los temas visible.