ملاحظات حول طابور المراجعة الجديد (2019)

روبن،

أنا أجهز حاليًا طلب دمج (PR) لـ إضافة OAuth الخاصة بـ Discord بهدف تخزين معلومات أكثر عن مستخدمي Discord في Discourse. أحاول استخدام نموذج ReviewableUser الخاص بك للحفاظ على الوظائف التي تنفذ الموافقة الآلية.

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

للأسف، أواجه خطأً غريبًا في Ruby وتساءلت عما إذا كنت قد صادفته من قبل.

الكود هو:

  def after_create_account(user, auth)
    super
    
    data = auth[:extra_data]
    if !user.approved && data[:auto_approve]
      user.approved = true
      user.approved_by_id = Discourse.system_user.id
      if reviewable_user = ReviewableUser.find_by(target: user)
          reviewable_user.set_approved_fields!(user, Discourse.system_user)
      end
    end
  end

بمجرد استدعاء ReviewUser.find_by، أحصل على استثناء:

*** NameError Exception: wrong constant name #<Class:0x000056134e417870>::DiscordAuthenticator

رغم أنني اعتقدت أنني أحرز تقدمًا جيدًا في Ruby، إلا أنني غير واضح بشأن سبب حدوث هذا!

هل هي مشكلة في المسار؟ لقد جربت العديد من عمليات الـ requires، لكن ذلك أدى إلى تفاقم المشكلة.

إنها تشبه أنماطًا مشابهة في مكان آخر في الكود الأساسي. أي أفكار من قبلكم تُقدّر كثيرًا!

المستودع هنا إذا احتجت إليه: discourse-plugin-discord-auth/plugin.rb at master · merefield/discourse-plugin-discord-auth · GitHub