مرحباً،
لقد قمت بترحيل منتدى من XenForo إلى Discourse، والآن هناك العديد من المشاركات القديمة التي أود إغلاقها. هل هناك طريقة لقول “إغلاق جميع المواضيع الأقدم من x أشهر”؟ لقد قمت بالفعل بتعيين هذا في الفئة، ولكنه يعمل فقط للمواضيع الجديدة.
مرحباً،
لقد قمت بترحيل منتدى من XenForo إلى Discourse، والآن هناك العديد من المشاركات القديمة التي أود إغلاقها. هل هناك طريقة لقول “إغلاق جميع المواضيع الأقدم من x أشهر”؟ لقد قمت بالفعل بتعيين هذا في الفئة، ولكنه يعمل فقط للمواضيع الجديدة.
يمكنك إغلاق المواضيع بشكل جماعي باستخدام Performing bulk actions as a moderator
ولكن اعتمادًا على عدد المواضيع التي تريد إغلاقها، قد يكون Administrative Bulk Operations خيارًا أفضل.
نعم، سيكون هناك شيء مشابه مرتبط، كيف يمكنني تضييق نطاقه إلى فئة واحدة؟
يمكنك العثور على معرّف الفئة، ثم استخدامه كشرط إضافي في الأمر. على سبيل المثال، أغلق جميع المواضيع المفتوحة في فئة “عامة” التي تم إنشاؤها قبل 24 سبتمبر:
cat_id = Category.find_by_slug('general').id
Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).find_each do |topic|
topic.update_status('closed', true, Discourse.system_user)
end
هذه الأنواع من العمليات تجعلني متوتراً بعض الشيء دائماً. تأكد من إنشاء نسخة احتياطية من قاعدة بياناتك قبل تشغيلها في حال حدث خطأ ما. قد يكون من الجيد أيضاً إجراء نوع من الفحص المسبق للتأكد من أنك تعمل على البيانات الصحيحة. إحدى الطرق للقيام بذلك هي إرجاع count للمواضيع التي سيتم إجراء العملية عليها. على سبيل المثال:
Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).count