Eccellente, sono lieto di sentire che ha funzionato per te. Quindi, per combinare le risposte, si può usare quanto segue nella console Rails per eliminare tutti gli argomenti che sono stati eliminati più di 90 giorni fa, ripetendo quante volte necessario se ci sono più di 1000 argomenti:
Topic.with_deleted.where(deleted_at: ...90.days.ago).limit(1000).destroy_all
Dopo che questo è stato completato, si può usare quanto segue per eliminare tutti i post che sono stati orfani da argomenti eliminati:
Post.find_by_sql("select * from posts where topic_id not in (select id from topics)").each { |p| p.destroy }
Vale la pena notare che i comandi sopra non elimineranno i post eliminati, ma solo gli argomenti eliminati e i loro post orfani. Per eliminare anche i post eliminati più vecchi di 90 giorni, usa quanto segue, ripetendo ancora se necessario:
Post.with_deleted.where(deleted_at: ...90.days.ago).limit(1000).destroy_all
P.S. Per curiosità, hai provato destroy_all senza limit(1000) e hai avuto problemi o non l’hai provato senza il limite?