Revisitando este tópico antigo, já que nenhuma das respostas está 100% correta.
A tarefa rake rake destroy:private_messages não exclui permanentemente todas as mensagens privadas, ela as exclui logicamente. Elas ainda podem ser vistas por um administrador e podem ser recuperadas.
O código Rails Topic.where(archetype: 'private_message').where("user_id > 0").destroy_all destrói os tópicos, mas não as mensagens reais. Elas ainda estão no banco de dados e podem ser visualizadas usando, por exemplo, o plugin data explorer.
Este código irá excluir permanentemente todas as postagens e tópicos de mensagens privadas:
aviso: faca afiada aqui!
Post.where(topic_id: Topic.where(archetype: 'private_message').where("user_id > 0")).destroy_all
Topic.where(archetype: 'private_message').where("user_id > 0").destroy_all
(e para filtrar isso em tópicos com 100 respostas ou mais, você precisa estender o Topic.where com where("posts_count > 100") em ambas as linhas)