批量永久删除已删除的帖子?

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

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

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

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

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

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

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

8 个赞