حذف المنشورات المحذوفة بشكل دائم دفعة واحدة؟

ممتاز، يسعدني سماع أن ذلك نجح معك. لذا، لدمج الإجابات، يمكن استخدام ما يلي في وحدة تحكم 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

ملاحظة جانبية: من باب الفضول، هل جربت destroy_all بدون limit(1000) وواجهت مشاكل، أم أنك لم تجربه بدون الحد؟

8 إعجابات