삭제된 게시물을 일괄적으로 영구 삭제할 수 있나요?

포럼의 오래된 게시물을 삭제하기 위해 다음 방법을 사용했습니다. 이는 The proper way to completely delete hundred of topics via rails? 와 @RGJ 님의 제안을 결합한 결과입니다.

결국 이렇게 진행한 이유는, 사용자 프라이버시를 보호하기 위해 데이터베이스에서 데이터를 완전히 제거하고 싶었기 때문입니다. 텍스트를 "이 게시물은 삭제되었습니다"로만 재작성하면 편집 이력이 그대로 남아 있고 비교적 쉽게 접근할 수 있어 충분하지 않았습니다.

삭제해야 할 토픽이 20,000개나 되어 시간이 꽤 걸렸습니다!

Topic.with_deleted.where("deleted_at < '2021-08-28'").limit(1000).destroy_all

이 작업으로 인해 고아(Orphaned) 게시물이 많이 남았기 때문에, 다음을 추가로 실행해야 했습니다:

Post.where('topic_id not in (select id from topics)').limit(1000).destroy_all