أهم المواضيع لا تعمل بعد الاستيراد

هل توجد طريقة لجعل Discourse يعيد حساب جميع الموضوعات الأعلى في ملف المستخدم بعد الاستيراد و/أو عداد الروابط في موضوع؟

من الغريب أن “أفضل الردود” تعمل بشكل صحيح.

أعتقد أن الإحصائيات تُحسب تلقائيًا كل 24 ساعة. لا ينبغي أن تحتاج إلى فعل أي شيء سوى الانتظار.

يبدو أن هذا ليس هو الحال، فقد كان لدينا اختبار استيراد يعمل منذ بضعة أسابيع، حيث تم تصحيح بعض الأمور تلقائيًا، بينما لم يتم تصحيح أمور أخرى. وتُعد ‘المواضيع الرئيسية’ أبرز مثال على ذلك، وكذلك ‘عدد الروابط في المواضيع’. وباستثناء ذلك، يبدو أن الأمور صحيحة في جميع أنحاء الموقع.

حسنًا، بالنظر إلى الكود، لدينا وظيفتان: TopRefreshToday (تُفعّل كل ساعة) و TopRefreshOlder (تُفعّل كل 24 ساعة). كلاهما يستدعيان طرائق من هنا، ويمكنك تشغيلها يدويًا من وحدة تحكم Rails إذا لزم الأمر.

هل يمكنك التحقق من /sidekiq/scheduler لمعرفة ما إذا كانت هاتان الوظيفتان تعملان؟

أفترض أن جميع المعلومات ذات الصلة بحساب المواضيع الأبرز تم نقلها مع عملية الاستيراد؟

في هذه الحالة، تعمل هذه الوظائف بشكل جيد. يبدو أن المشكلة تكمن في أن حقل like_count في جدول المواضيع غير مملوء. هل توجد طريقة جيدة لإعادة حساب قيمة هذا الحقل، أم أن ذلك يتطلب تنفيذه أثناء الاستيراد؟ وإذا كان يجب تنفيذه أثناء الاستيراد، فكيف يُفترض أن تعمل عملية الحساب؟ هل هي مجموع جميع الإعجابات من جميع المنشورات في الموضوع؟

لقد وجدت طريقة باستخدام وحدة تحكم Rails تبدو وكأنها تعيد حساب هذا الحقل:

Topic.visible.map(&:update_statistics)

المشكلة مع هذا الحل هي أنه بالنظر إلى عدد المواضيع والمنشورات لدينا، كنتُ أتوقع أن يستغرق تنفيذ هذا الأمر حتى يكتمل حوالي شهرين.

يبدو أنه يمكنك إعادة توليد like_count باستخدام طريقة update_action_counts:

لذلك ربما شيء مثل:

Topic.all.find_each do |t|
  putc '.'
  t.update_action_counts
end

يبدو أن هذا قد نجح بشكل رائع مع @Ghan وأنا، شكرًا جزيلاً لك :slight_smile: