Удалить удалённые посты навсегда массово?

Отлично, рад слышать, что это помогло. Таким образом, для объединения ответов можно использовать следующее в консоли 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

P.S. Из любопытства: вы пробовали использовать destroy_all без limit(1000) и столкнулись с проблемами, или вы вообще не пробовали это без ограничения?