تلعيب Discourse - الحصول على 404 / MissingAttributeError على مسار /leaderboard

لذا، لقد قررتُ مؤخرًا تفعيل التلعيب (gamification) وواجهتُ على الفور مشكلة حيث كان المسار /leaderboard يعيد خطأ 404. كان لدى الخلفية أكثر من 800 ألف سجل نقاط محسوب، وكانت الأذونات صحيحة، لكن الصفحة نفسها لم تكن تُحمّل.

أظهرت مراجعة سجلات الخادم ما يلي:
ActiveModel::MissingAttributeError (missing attribute 'admin' for User)

أثناء التعمق في كود الإضافة، لاحظتُ في ملف lib/discourse_gamification/leaderboard_cached_view.rb أن استعلام المستخدم يستخدم سلسلة .select محددة لسحب الأعمدة الخاصة بجدول المتصدرين:

.select(
"users.id, users.name, users.username, users.uploaded_avatar_id, p.total_score, p.position",
)

وبما أن users.admin و users.moderator غير مدرجين في ذلك الاستعلام، فإن كائنات المستخدمين المُنشأة لا تحتوي على تلك الحقول المتاحة. يبدو أن (?) في مرحلة ما لاحقًا أثناء التسلسل (serialization) أو عرض التخطيط الأساسي، يتم تفعيل فحص الموظفين (staff check) على هؤلاء المستخدمين، مما يتسبب في قيام Rails برمي خطأ MissingAttributeError والعودة إلى صفحة 404.

لقد عدّلتُ ذلك الملف يدويًا لإدراج users.admin و users.moderator في كتلة .select:

.select(
  "users.id, users.name, users.username, users.uploaded_avatar_id, users.admin, users.moderator, p.total_score, p.position",
)

بعد إعادة تشغيل حاوية التطبيق، بدأ جدول المتصدرين في التحميل بشكل مثالي.

أظن أن هذا خطأ (?) أم أنني بالغتُ في التفكير أو أغفلتُ شيئًا تمامًا؟

الموقع حاليًا يعمل على الإصدار v2026.6.0-latest (47a830330f)