# 批量永久删除已删除的帖子？

**URL:** https://meta.discourse.org/t/delete-deleted-posts-permanently-in-bulk/203289
**Category:** Support
**Created:** [2021年九月12日 04:15 UTC](https://meta.discourse.org/t/delete-deleted-posts-permanently-in-bulk/203289 "2021-09-12T04:15:12Z")
**Posts on this page:** 1
**Showing post:** 57

<div class="post-metadata">

### Author: ![Simon\_Manning](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon_manning/32/198596_2.png) [@Simon\_Manning](https://meta.discourse.org/u/Simon_Manning)
#### Post date: [2021年十二月8日 16:00 UTC](https://meta.discourse.org/t/delete-deleted-posts-permanently-in-bulk/203289/57 "2021-12-08T16:00:57Z")

</div>

太好了，很高兴听到这能帮到你。为了合并这些答案，你可以在 Rails 控制台中执行以下命令来销毁所有已删除超过 90 天的主题，如果主题超过 1000 个，则重复执行以销毁所有主题：

```plaintext
Topic.with_deleted.where(deleted_at: ...90.days.ago).limit(1000).destroy_all

```

完成上述操作后，可以使用以下命令销毁所有已孤立于已销毁主题的帖子：

```plaintext
Post.find_by_sql("select * from posts where topic_id not in (select id from topics)").each { |p| p.destroy }

```

值得注意的是，上述命令不会销毁已删除的帖子，只会销毁已删除的主题及其孤立的帖子。要同时销毁已删除的、超过 90 天的帖子，请使用以下命令，同样根据需要重复执行：

```plaintext
Post.with_deleted.where(deleted_at: ...90.days.ago).limit(1000).destroy_all

```

**附言** 顺便问一下，你是否尝试过不带 `limit(1000)` 的 `destroy_all` 并遇到了问题，还是你根本没有尝试过不带限制的命令？

---

_[View the full topic](https://meta.discourse.org/t/delete-deleted-posts-permanently-in-bulk/203289)._
