Feedback on the new Review Queue (2019)

Робин,

Сейчас я готовлю PR для плагина Discord OAuth, основная цель которого — сохранять больше информации о пользователях 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, я не понимаю, почему это происходит.

Может быть, это проблема с путями? Я пробовал множество require, но это только усугубляет ситуацию.

Это очень похоже на аналогичные паттерны в основном коде. Буду очень благодарен за любые мысли!

Репозиторий, если нужно: discourse-plugin-discord-auth/plugin.rb at master · merefield/discourse-plugin-discord-auth · GitHub