Gamification de Discourse : Erreur 404 / MissingAttributeError sur la route /leaderboard

Donc, j’ai récemment décidé d’activer la gamification et j’ai immédiatement rencontré un problème où la route /leaderboard renvoyait une erreur 404. Le backend comptait plus de 800 000 enregistrements de scores calculés et les permissions étaient correctes, mais la page elle-même ne se chargeait pas.

L’analyse des journaux du serveur a révélé :
ActiveModel::MissingAttributeError (attribut manquant 'admin' pour User)

En fouillant dans le code du plugin, j’ai remarqué dans lib/discourse_gamification/leaderboard_cached_view.rb que la requête utilisateur utilise une chaîne .select spécifique pour récupérer les colonnes nécessaires au tableau de classement :

.select(
"users.id, users.name, users.username, users.uploaded_avatar_id, p.total_score, p.position",
)

Comme users.admin et users.moderator ne sont pas inclus dans cette requête, les objets utilisateur instanciés ne disposent pas de ces champs. Il semble (?) qu’à un stade ultérieur, lors de la sérialisation ou du rendu de la mise en page principale, une vérification du statut du personnel soit déclenchée pour ces utilisateurs, ce qui amène Rails à lever l’erreur MissingAttributeError et à basculer vers une erreur 404.

J’ai modifié manuellement ce fichier pour inclure users.admin et users.moderator dans le bloc .select :

.select(
  "users.id, users.name, users.username, users.uploaded_avatar_id, users.admin, users.moderator, p.total_score, p.position",
)

Après avoir redémarré le conteneur de l’application, le tableau de classement s’est chargé parfaitement.

Je suppose qu’il s’agit d’un bug (?) ou ai-je complètement surestimé ou négligé quelque chose ?

Le site est actuellement sur la version v2026.6.0-latest (47a830330f).