# ¿Cerrar masivamente temas existentes anteriores a x?

**URL:** https://meta.discourse.org/t/mass-close-existing-topics-older-than-x/328214
**Category:** Support
**Created:** [26 Septiembre, 2024 12:00 UTC](https://meta.discourse.org/t/mass-close-existing-topics-older-than-x/328214 "2024-09-26T12:00:42Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Tealk](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tealk/32/525923_2.png) [@Tealk](https://meta.discourse.org/u/Tealk)
#### Post date: [26 Septiembre, 2024 12:00 UTC](https://meta.discourse.org/t/mass-close-existing-topics-older-than-x/328214/1 "2024-09-26T12:00:43Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![putty](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/putty/32/370902_2.png) [@putty](https://meta.discourse.org/u/putty)
#### Post date: [26 Septiembre, 2024 13:44 UTC](https://meta.discourse.org/t/mass-close-existing-topics-older-than-x/328214/2 "2024-09-26T13:44:39Z")

</div>

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

 ![CleanShot 2024-09-26 at 09.40.40](https://global.discourse-cdn.com/meta/original/4X/7/2/f/72ff25fa4cb955dff6a749d2891eb8fa48f9c5cc.png)

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:

 ![CleanShot 2024-09-26 at 09.43.54](https://global.discourse-cdn.com/meta/original/4X/9/9/a/99ab2e03202f4138b60a806304f345e8b1775a0c.png)

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

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [26 Septiembre, 2024 13:46 UTC](https://meta.discourse.org/t/mass-close-existing-topics-older-than-x/328214/3 "2024-09-26T13:46:12Z")

</div>

Puedes cerrar temas en masa con [Performing bulk actions as a moderator](https://meta.discourse.org/t/performing-bulk-actions-as-a-moderator/272832?u=moin)  
Pero dependiendo de cuántos temas quieras cerrar, [Administrative Bulk Operations](https://meta.discourse.org/t/administrative-bulk-operations/118349?u=moin) puede ser la mejor opción.

---

<div class="post-metadata">

### Author: ![Tealk](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tealk/32/525923_2.png) [@Tealk](https://meta.discourse.org/u/Tealk)
#### Post date: [26 Septiembre, 2024 14:23 UTC](https://meta.discourse.org/t/mass-close-existing-topics-older-than-x/328214/4 "2024-09-26T14:23:42Z")

</div>

> [@Discourse](#):
>
> Cerrar todos los temas creados antes de una fecha especificada (incluye acción de publicación)
> 
> ```plaintext
> Topic.where(closed: false).where("created_at < '2015-01-01'").find_each do |topic| 
> topic.update_status('closed', true, Discourse.system_user)
> end
> 
> ```

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

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [26 Septiembre, 2024 17:39 UTC](https://meta.discourse.org/t/mass-close-existing-topics-older-than-x/328214/5 "2024-09-26T17:39:31Z")

</div>

> [@Tealk](#):
>
> ¿Cómo puedo reducirlo a una categoría?

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:

```ruby
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:

```ruby
Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).count

```

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [26 Octubre, 2024 17:39 UTC](https://meta.discourse.org/t/mass-close-existing-topics-older-than-x/328214/6 "2024-10-26T17:39:44Z")

</div>

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