Esta guía proporciona instrucciones sobre cómo eliminar masivamente todos los temas dentro de una categoría en una instancia autogestionada de Discourse.
Nivel de usuario requerido: Administrador del sistema
Se requiere acceso SSH a su servidor
Eliminar todos los temas de una categoría puede ser necesario por varias razones, como reorganizar contenido o limpiar discusiones obsoletas. Esta guía le mostrará los pasos para llevar a cabo esta tarea de forma segura en un servidor Discourse autogestionado.
Esta es una acción destructiva. Asegúrese de hacer una copia de seguridad de su foro antes de continuar
Pasos para eliminar temas en una categoría
- Identifique la ‘slug’ de la categoría: Este es el nombre utilizado en la URL de la categoría.
- Acceda a su servidor: Utilice SSH para iniciar sesión en su servidor.
ssh username@your-server.com
- Navegue al directorio de Discourse:
cd /var/discourse
- Entre en la aplicación Discourse:
./launcher enter app
- Ejecute el comando de eliminación: Reemplace
\"mycategory\"con la ‘slug’ de su categoría.
rake destroy:topics[\"mycategory\"]
Este proceso puede tardar dependiendo del número de temas.
Eliminación de temas en subcategorías
Para eliminar temas en una subcategoría, incluya la ‘slug’ de la categoría principal en su comando. Por ejemplo:
rake destroy:topics[\"childcategory\",\"parentcategory\"]
Eliminar todos los temas en todas las categorías
¡Esta acción eliminará todos los temas de cada categoría!
rake destroy:topics_all_categories
Preguntas Comunes
¿Cuánto tiempo almacena Discourse los temas eliminados? Todavía puedo acceder a temas con un enlace directo.
Los temas permanecen en la base de datos después de la eliminación. Solo el personal podrá ver los temas eliminados.
¿Cómo puedo eliminar permanentemente temas de la base de datos?
Puede eliminar permanentemente publicaciones (y sus temas) de la base de datos utilizando la tarea ‘rake’ destroy:posts. Esto requiere que la configuración del sitio oculta can_permanently_delete esté habilitada primero. Pase los IDs de las publicaciones como una lista separada por comas:
rake destroy:posts[4,8,15,16,23,42]
También puede canalizar los IDs de las publicaciones desde un archivo:
cat post_ids.txt | rake destroy:posts
¿Es posible restringir la eliminación de temas a un período de tiempo (entre dos fechas)?
Necesitaría hacerlo desde la consola de Rails, un comando similar al siguiente debería funcionar:
Topic.where(\"created_at.....\").each do |t|
first_post = t.ordered_posts.first
PostDestroyer.new(Discourse.system_user, first_post).destroy if first_post
end
¿Cómo encuentro la ‘slug’ o el ID de mi categoría?
La tarea destroy:topics utiliza la ‘slug’ de la categoría (el nombre en la URL de la categoría). Puede listar todas las categorías con sus IDs y ‘slugs’ ejecutando:
rake categories:list
Información Adicional
Para más información sobre otras operaciones administrativas, por favor consulte: