Recuperación masiva

Continuando la discusión de La mejor manera de eliminar temporalmente el acceso público a los temas de un usuario:

¿Sería posible habilitar un selector de eliminación masiva en la lista /u/nombredeusuario/publicaciones-eliminadas? Por lo que puedo ver, requeriría un script SQL/rails técnicamente muy desafiante y potencialmente peligroso para recuperarlos programáticamente.

Para que esta función sea más útil, sería mejor diferenciar entre temas eliminados y respuestas eliminadas. Quizás la URL existente /u/nombredeusuario/publicaciones-eliminadas podría mantenerse, y luego agregar a ella /u/nombredeusuario/publicaciones-eliminadas/temas y /u/nombredeusuario/publicaciones-eliminadas/respuestas.

2 Me gusta

Los temas ya están eliminados, y no tengo una estimación de cuándo el usuario podría solicitar la restauración de los temas, así que supongo que puedo esperar a que se implemente la eliminación masiva. No creo ser el único que lo encontraría útil, hay bastantes publicaciones aquí pidiendo ayuda para hacerlo.

Esto también parece una forma potencialmente más fácil y segura de eliminar programáticamente, asumiendo que puedo averiguar cómo generar la lista de los IDs de temas eliminados del usuario:

Esto encontrará temas eliminados creados por user_id 1.

dts=Topic.with_deleted.where(user_id: 1).where("deleted_at is not null");
dts.pluck(:deleted_at, :id)
dps=Post.with_deleted.where(user_id: 1).where("deleted_at is not null");
dbs.pluck(:deleted_at, :id)

Y parece que puedes restaurar publicaciones con algo como

dp=dps.first
dp.deleted_at=nil
dp.deleted_by=nil
dp.save

Y harías algo similar para los temas.

Si llega el momento de restaurar las cosas, lo anterior debería ser suficiente para alguien que sepa un poquito de rails para poder restaurarlas todas.

Para tu información, si los hubieras movido a una categoría oculta, habría sido quizás algo más fácil revertirlos en bloque a la última revisión. Pero cuando ninguna de esas cosas es posible para ti, creo que es una distinción sin diferencia.

Por último, me disculparé por, una vez más, tratar una solicitud de función como #soporte. Creo que lo hago porque no tengo poder para crear funciones, pero sí para resolver problemas.

4 Me gusta

No hay ningún problema, Jay, te lo agradezco mucho. Por supuesto, preferiría que se implementara un método de GUI en Discourse, pero si no, te agradezco mucho que me hayas guiado a través de eso.

1 me gusta

Ciertamente es un caso extremo, pero intentamos hacer un seguimiento cuando una función se solicita varias veces (especialmente de los clientes) para tener una mejor idea de cuándo seguir adelante :slight_smile:

1 me gusta