Supprimer définitivement les publications supprimées en masse ?

Excellent, je suis ravi d’apprendre que cela a fonctionné pour vous. Donc, pour combiner les réponses, on peut utiliser ce qui suit dans la console Rails pour détruire tous les sujets qui ont été supprimés il y a plus de 90 jours, en répétant autant de fois que nécessaire s’il y a plus de 1000 sujets :

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

Une fois cela terminé, on peut utiliser ce qui suit pour détruire tous les messages orphelins de sujets détruits :

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

Il convient de noter que les commandes ci-dessus ne détruiront pas les messages supprimés, seulement les sujets supprimés et leurs messages orphelins. Pour détruire également les messages supprimés de plus de 90 jours, utilisez ce qui suit, en répétant à nouveau si nécessaire :

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

P.S. Par curiosité, avez-vous essayé destroy_all sans limit(1000) et rencontré des problèmes, ou ne l’avez-vous pas essayé sans la limite ?

8 « J'aime »