كيفية حذف آلاف الرسائل الشخصية؟

إعادة النظر في هذا الموضوع القديم، حيث أن أياً من الإجابات ليست صحيحة بنسبة 100٪.

مهمة rake rake destroy:private_messages لا تقوم بحذف الرسائل الخاصة بشكل دائم، بل تقوم بحذفها بشكل ناعم. لا يزال بإمكان المسؤول رؤيتها ويمكن استعادتها.

الكود Rails Topic.where(archetype: 'private_message').where("user_id > 0").destroy_all يقوم بحذف المواضيع، ولكن ليس الرسائل الفعلية. لا تزال موجودة في قاعدة البيانات ويمكن عرضها باستخدام، على سبيل المثال، المكون الإضافي لاستكشاف البيانات.

هذا الكود سيقوم بحذف جميع مشاركات ومواضيع الرسائل الخاصة بشكل دائم:
تحذير: سكين حاد هنا!

Post.where(topic_id: Topic.where(archetype: 'private_message').where("user_id > 0")).destroy_all
Topic.where(archetype: 'private_message').where("user_id > 0").destroy_all

(وللتصفية على المواضيع التي تحتوي على 100 رد أو أكثر، تحتاج إلى توسيع Topic.where باستخدام where("posts_count > 100") في كلا السطرين)

6 إعجابات