Así que, recientemente decidí habilitar la gamificación y me topé de inmediato con un problema: la ruta /leaderboard devolvía un error 404. El backend tenía más de 800 mil registros de puntuación calculados y los permisos eran correctos, pero la página en sí no cargaba.
Al revisar los registros del servidor, apareció lo siguiente:
ActiveModel::MissingAttributeError (falta el atributo 'admin' para User)
Mientras exploraba el código del plugin, noté que en lib/discourse_gamification/leaderboard_cached_view.rb la consulta de usuarios utiliza una cadena .select específica para extraer las columnas del tablero de clasificación:
.select(
"users.id, users.name, users.username, users.uploaded_avatar_id, p.total_score, p.position",
)
Dado que users.admin y users.moderator no están incluidos en esa consulta, los objetos de usuario instanciados no tienen esos campos disponibles. Parece que (?) más adelante, durante la serialización o la renderización del diseño principal, se activa una verificación de personal en esos usuarios, lo que hace que Rails lance el MissingAttributeError y retroceda a un error 404.
Edité manualmente ese archivo para incluir users.admin y users.moderator en el bloque .select:
.select(
"users.id, users.name, users.username, users.uploaded_avatar_id, users.admin, users.moderator, p.total_score, p.position",
)
Después de reiniciar el contenedor de la aplicación, el tablero de clasificación comenzó a cargar perfectamente.
Supongo que esto es un error (?) o ¿he sobreanalizado o pasado por alto algo completamente?
El sitio está actualmente en la versión v2026.6.0-latest (47a830330f).