如何删除数千条个人消息?

重新讨论这个旧话题,因为没有一个答案是100%正确的。

rake 任务 rake destroy:private_messages 不会硬删除所有私人消息,它只会软删除它们。管理员仍然可以看到它们,并且可以恢复它们。

Rails 代码 Topic.where(archetype: 'private_message').where("user_id > 0").destroy_all 会删除主题,但不会删除实际的消息。它们仍然在数据库中,可以使用例如数据浏览器插件来查看。

这段代码永久删除所有私人消息帖子和主题:
警告:这里有锋利的刀!

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条的主题,您需要在两行中将 Topic.where 扩展为 where("posts_count > 100")

6 个赞