أبحث عن طريقة لحذف الرسائل الخاصة التي تتجاوز عمرًا معينًا من جميع المواضيع.
بشكل عام، نستخدم الرسائل الخاصة لمناقشة الإجراءات المحتملة للمراقبين، ولكن بمجرد اتخاذ الإجراء، تصبح هذه الرسائل أقل فائدة وتتحول تدريجيًا إلى ضجيج مع مرور الوقت.
يمكنني حذف المنشورات التي تتجاوز عمرًا معينًا باستخدام post_type=4 (رسالة خاصة)، لكن يبدو أن هذا قد يترك أشياء معلقة أو غير متسقة في قاعدة البيانات، أو قد لا يُسمح به بسبب مفاتيح المنتدى.
whispers = Post.where(post_type: 4).where("created_at < ?", 1.year.ago)
whispers.find_each do |w|
PostDestroyer.new(Discourse.system_user, w, skip_staff_log: true).destroy
putc "."
end
ستعمل هذه الطريقة فعليًا كما لو أن مستخدم النظام قد حذف كل منشور يدويًا باستخدام زر الحذف الموجود في المنشور. لقد أضفت skip_staff_log حتى لا تملأ سجلات الطاقم، ولكن يمكنك إزالتها إذا فضلت تسجيل الإجراء.
إذن هذه المهمة تعمل بشكل جيد، شكرًا لك… لكن الرسائل الخاصة منكمضة ولا يزال بإمكان المشرفين ومديري النقاشات رؤيتها عند توسيعها.
هذا يُنظم المواضيع، لكنني كنت آمل أن تُحذف تمامًا. تساءلت عما إذا كان يمكن نقل جميع الرسائل الخاصة إلى موضوع جديد، ثم حذفه أو إخفاؤه عن المديريين على الأقل، لكنني وجدت هذا: Is there a way to remove all the deleted/hidden posts?