Retour d'expérience sur la nouvelle File d'attente de revue (2019)

Robin,

Je prépare actuellement une PR pour le plugin Discord OAuth, principalement afin de stocker davantage d’informations sur les utilisateurs Discord dans Discourse. J’essaie d’utiliser votre modèle ReviewableUser pour conserver la fonctionnalité d’approbation automatisée.

Comme l’implémentation actuelle crée une revue pour les nouveaux utilisateurs de manière asynchrone, je dois vérifier si une telle revue a été créée et la supprimer.

Malheureusement, je rencontre une erreur Ruby très étrange et je me demandais si vous l’aviez déjà rencontrée.

Le code est le suivant :

  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

Dès que j’exécute ReviewableUser.find_by, une exception est levée :

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

Bien que je pense faire de bons progrès en Ruby, je ne comprends pas pourquoi cela se produit.

Est-ce un problème de chemin ? J’ai essayé plusieurs require, mais cela empire rapidement.

Cela ressemble beaucoup à des modèles similaires ailleurs dans le code de base. Toute suggestion serait grandement appréciée !

Le dépôt est disponible ici si nécessaire : discourse-plugin-discord-auth/plugin.rb at master · merefield/discourse-plugin-discord-auth · GitHub