لحذف المنشورات القديمة في منتداك، استخدمت هذا الحل. وهو نتيجة دمج 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
وبما أن هذا ترك العديد من المنشورات اليتيمة، فقد اضطررت إلى اتباعه بما يلي:
Post.where('topic_id not in (select id from topics)').limit(1000).destroy_all