فشل استدعاءات API بسبب مشكلة في main_user_record silenced_till

الوصف
عند جلب المستخدمين النشطين عبر واجهة برمجة التطبيقات (API)، تُرجع بعض صفحات /admin/users/list/active.json رمز خطأ HTTP 500.

الحل البديل
إذا تم تخطي الصفحات التي تواجه مشكلة، يمكن جلب الصفحات الأخرى دون أي عائق.

الخطأ
خطأ الخادم الذي تسبب في رمز HTTP 500:

NoMethodError: undefined method '[]' for nil (NoMethodError)

main_user_record[:silenced_till]
^^^^^^^^^^^^^^^^


من app/models/user.rb:1335:in `silenced_till'
من active_record/attribute_methods/query.rb:48:in `public_send'
من active_record/attribute_methods/query.rb:48:in `query_attribute'
من active_model/attribute_methods.rb:273:in `silenced_till?'
من app/serializers/admin_user_list_serializer.rb:51:in `include_silenced_till?'
من active_model/serializer.rb:375:in `include?'
...

تشير سجلات نظامنا إلى أننا بدأنا في تلقي هذه الأخطاء بعد الترقية من Discourse v3.5.1 إلى v3.5.2 في أواخر أكتوبر 2025. تم إدخال الأسطر المشار إليها في FIX: Delegate silenced_till from anonymous user to main user account · Pull Request #32416 · discourse/discourse كما نوقش في Silenced user can circumvent it entering anonymous mode - #12 by pangbo.

الحل
أنا لست خبيرًا في Ruby بنفسي، ولكن بما أن الأمر يبدو لي أن هذه المشكلة تحدث مع صفحات JSON الخاصة بواجهة برمجة التطبيقات التي تحتوي على مستخدمين لم يكونوا نشطين منذ التغييرات في v3.5.2، فأنا أظن أن هناك هجرة قاعدة بيانات ناقصة تتعامل مع حالة حافة معينة مرتبطة بهذا التغيير.