Para excluir as postagens antigas em nosso fórum, usei o seguinte. É o resultado da combinação de The proper way to completely delete hundred of topics via rails? com as sugestões do @RGJ.
No final, optei por fazer isso porque realmente queria remover os dados do banco de dados para proteger a privacidade dos usuários. Reescrever o texto para “Esta postagem foi excluída” ainda deixa o histórico de edições intacto e relativamente acessível, o que não é suficiente.
Como tínhamos 20.000 tópicos para destruir, o processo levou um tempo!
Topic.with_deleted.where("deleted_at < '2021-08-28'").limit(1000).destroy_all
Como isso deixou muitas postagens órfãs, precisei seguir com:
Post.where('topic_id not in (select id from topics)').limit(1000).destroy_all