خطأ: فشل استدعاء عضوية مجموعة Patreon للمستخدم الجديد

أقوم حاليًا بإعداد خادم Discourse مع تكامل Patreon. لقد تلقيت رسالة خطأ التالية عند تسجيل المستخدمين الداعمين (Patrons) في Discourse:

فشل استدعاء عضوية مجموعة Patreon للمستخدم الجديد 7 بالخطأ: undefined method `add' for nil:NilClass.
/var/www/discourse/plugins/discourse-patreon/plugin.rb:166:in `block (3 levels) in activate!'
/var/www/discourse/plugins/discourse-patreon/plugin.rb:164:in `each'
/var/www/discourse/plugins/discourse-patreon/plugin.rb:164:in `block (2 levels) in activate!'
/var/www/discourse/lib/plugin/instance.rb:215:in `public_send'
/var/www/discourse/lib/plugin/instance.rb:215:in `block (2 levels) in add_model_callback'

يتم تسجيل المستخدم باستخدام مصادقة Patreon. يتم إنشاء المستخدم، ويظهر Patreon تحت الحسابات المرتبطة، لكن بيانات Patreon (المبلغ، المكافآت) لا تُضاف إلى ملفه الشخصي، ولا يُضاف إلى المجموعة. إذا نقرت على تحديث بيانات Patreon ومزامنة المجموعات، تظهر البيانات ويتم إضافته إلى المجموعة بنجاح.

هم ليسوا داعمين جدد. لقد كانوا داعمين لفترة طويلة، وهم ينضمون إلى Discourse الآن لأول مرة.

أعمل حاليًا على الإصدار الحالي 2.4.0.beta4. الخادم خاص بي، لكنه تثبيت قياسي.

قبل التحديث إلى هذا الإصدار، قمت بإلغاء تنشيط البرنامج المساعد، وحذفت وإعادة إنشاء مفتاح العميل. (محاولة يائسة لحل مشكلة تم حلها فعليًا بالإصدار الجديد…) أتساءل عما إذا كنت قد “أفسدت” تكوين مجموعة الداعمين بطريقة ما، رغم أنه يبدو غريبًا أن المزامنة تعمل، لكن تسجيل مستخدم جديد لا يعمل.

لقد أجريت للتو اختبارًا باستخدام مستخدم تجريبي:

  1. إنشاء مستخدم تجريبي في Patreon مع تعهد بحملتي. (يتم تشغيل Webhook، لكنني لا أعتقد أن هذا مهم لأن المشكلة تحدث مع داعمين “قدامى”.)
  2. النقر على تحديث بيانات Patreon ومزامنة المجموعات، والانتظار حتى تظهر رسالة غير متزامنة بأن البيانات قد تم تحديثها.
  3. تسجيل المستخدم التجريبي في Discourse.
  4. التحقق من بيانات Patreon للمستخدم التجريبي. لا يوجد قسم Patreon - المبلغ، المكافآت. المستخدم غير مدرج في مجموعة الداعمين.
  5. النقر على تحديث بيانات Patreon ومزامنة المجموعات، والانتظار حتى تظهر رسالة غير متزامنة بأن البيانات قد تم تحديثها.
  6. التحقق من بيانات Patreon للمستخدم التجريبي. قسم Patreon موجود الآن، مع المبلغ والمكافآت. المستخدم مدرج في مجموعة الداعمين.

شكرًا مقدّمًا لأي مساعدة!

أي أفكار حول هذا الأمر @vinothkannans؟

لقد استعرضت الكود قليلاً ولاحظت أن وظيفة تعيين المجموعات تُدار في نقطتين:

  1. add_model_callback في plugin.rb والتي تتعامل مع تسجيل مستخدم جديد واحد.
  2. sync_groups في patron.rb والتي تتعامل مع مزامنة العضوية في المجموعات دفعة واحدة لجميع الأعضاء.

تجربتي تشير إلى أن sync_groups تعمل بينما add_model_callback لا تعمل.

لاحظت أن sync_groups تتضمن السطر التالي:

next if group.nil?

هل نحتاج إلى نفس السطر في add_model_callback؟ (قبل السطر 166.)

هذا قد يوقف رمي الاستثناء، لكنني لا أعرف ما إذا كان سيجعل كل شيء صحيحًا. لا أعرف الكود أو نموذج البيانات، لذا فإن هذا مجرد تخمين إلى حد كبير.

3 إعجابات

نعم، أنت محق. شكرًا لك على التقرير. تم إصلاحه في الالتزام أدناه

إعجابَين (2)

شكرًا لك، @vinothkannans!

3 إعجابات