لدينا آلاف المواضيع القديمة أو غير الصالحة عبر منتدانا نود حذفها. لقد بحثت بالفعل في قسم “ما وراء الكواليس” (Meta) عن طريقة مناسبة لتحقيق ذلك، لكنني لم أجد حلاً مناسباً.
هل يكفي تكرار المرور عبر قائمة بمعرفات المواضيع (topic-ids) وتعيين علامة deleted_at لكل موضوع نود “حذفه”، أم توجد طريقة أفضل؟ أعرف أن هذا حل كسول إلى حد ما.
أعتقد أن كتابة إضافة (plugin) صغيرة إضافية لاستخدام Topic.destroy للحذف الجماعي يعتبر عبئاً غير ضروري قليلاً.
مع خالص التحيات،
ساسكا
ملاحظة:
السياق: هذه المواضيع تسبب مشاكل في الزحف (crawling) وأخطاء soft404، ونود إخفاءها من محركات البحث. فالمواضيع المحذوفة مستبعدة من خريطة موقعنا (sitemap).
نعم، نرغب في إزالة هذه المواضيع من القائمة ومنع فهرستها.
سيتم ذلك مرة واحدة فقط، حيث يمكننا تعديل أي موضوع أو منشور “معيب” قادم يسبب مشاكل في الزحف يدويًا.
منتداك قديم جدًا (بدأ في عام 1996) وتمت هجرته عدة مرات مع وجود بناء جملة غريب أو قديم في النصوص الخام وأشياء أخرى. لقد جمعنا جميع المواضيع التي تعود لعام 2015 وما قبله، والتي يقل عدد مشاهداتها عن 1000 وتظهر في وحدة تحكم بحث جوجل على أنها “معيبة”.
بالنسبة لنا، لا بأس إذا تم تحديد هذه المواضيع كمحذوفة، لكننا لم نكن متأكدين تمامًا مما إذا كان تعيين deleted_at مباشرة فكرة جيدة أو إذا كانت هناك أي تبعيات يجب أن ننتبه لها. لذا، إذا كان يجب علينا اتباع الطريقة البرمجية.
شكرًا لنصيحتك! في حال قررنا حذف تلك المواضيع تمامًا، سأقوم بتعيين deleted_at و visible=false عبر استعلام SQL. سيتم حذف هذه المواضيع بواسطة مهمة sidekiq بعد 30 يومًا. لكن إذا كان يجب الاحتفاظ بهذه المواضيع، فسأفعل ما اقترحته وأقوم بـ “حذفها” عبر مقتطف صغير بلغة Ruby باستخدام topic.delete. لذا في الحالتين، ستتم معالجة هذه المواضيع بواسطة discourse نفسه في النهاية، وهو ما يجب أن يعتني بالاعتمادات المحتملة.