¿Cerrar masivamente temas existentes anteriores a x?

Hola,

He migrado un foro de XenForo a Discourse, ahora hay muchas publicaciones antiguas que me gustaría cerrar. ¿Hay alguna forma de decir “cerrar todos los temas con una antigüedad superior a x meses”? Ya he configurado esto en la categoría, pero solo funciona para temas nuevos.

2 Me gusta

Podrías intentar usar esta configuración en la configuración de Categoría:

No estoy seguro si cerrará cosas retroactivamente, pero vale la pena intentarlo.

Mi otra idea fue hacer un filtro avanzado y establecer una fecha anterior:

A partir de ahí, puedes usar acciones masivas en los temas que aparezcan.

4 Me gusta

Puedes cerrar temas en masa con Performing bulk actions as a moderator
Pero dependiendo de cuántos temas quieras cerrar, Administrative Bulk Operations puede ser la mejor opción.

7 Me gusta

Sí, habría algo similar vinculado, ¿cómo puedo reducirlo a una categoría?

2 Me gusta

Puedes encontrar el ID de la categoría y luego usarlo como una condición adicional en el comando. Por ejemplo, cerrar todos los temas abiertos en la categoría ‘general’ que se crearon antes del 24 de septiembre:

cat_id = Category.find_by_slug('general').id
Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).find_each do |topic|
  topic.update_status('closed', true, Discourse.system_user)
end

Este tipo de operaciones siempre me ponen un poco nervioso. Asegúrate de crear una copia de seguridad de tu base de datos antes de ejecutarlas en caso de que algo salga mal. También podría ser una buena idea ejecutar algún tipo de verificación preliminar para asegurarte de que estás operando sobre los datos correctos. Una forma de hacerlo sería devolver el count de temas sobre los que se realizará la operación. Por ejemplo:

Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).count
4 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.