Возвращаюсь к этой старой теме, так как ни один из ответов не является на 100% верным.
Задача Rake rake destroy:private_messages не выполняет жесткое удаление всех личных сообщений, а лишь помечает их как удаленные (soft delete). Их всё ещё может видеть администратор, и они могут быть восстановлены.
Код Rails Topic.where(archetype: 'private_message').where("user_id > 0").destroy_all удаляет темы, но не сами сообщения. Они всё ещё находятся в базе данных и могут быть просмотрены, например, с помощью плагина Data Explorer.
Этот код действительно навсегда удалит все посты и темы личных сообщений:
внимание: острый нож!
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
(чтобы отфильтровать темы с 100 и более ответами, необходимо добавить условие where("posts_count > 100") к Topic.where в обеих строках)