Serait-il possible d’ajouter une colonne pour le nombre de badges ? J’ai beaucoup de… euh… chasseurs de badges, oui c’est le terme poli, et ils veulent voir d’un coup d’œil qui est en tête en termes de collecte du plus grand nombre de badges.

Ce n’est pas prévu ni sur aucune feuille de route pour le moment.
Merci pour l’info — à votre connaissance, quelqu’un d’autre a-t-il déjà demandé quelque chose de similaire, ou suis-je le seul à faire cette demande ? ![]()
J’aimerais vraiment vraiment ça aussi.
Ruby est une langue étrangère étrange pour moi, et SQL au-delà de simples SELECT et peut-être GROUP BY me donne des démangeaisons, mais… d’après ce que je comprends, les éléments de la page utilisateur peuvent provenir de la table directory_items, qui est construite en additionnant et en comptant des éléments dans diverses tables utilisateur, dans directory_item.rb.
Dans user_stat.rb, je trouve un distinct_badge_count, ce qui serait bien si c’était pour toujours, mais nous voulons les différentes périodes de temps du classement, et aussi pour cet usage, nous ne voulons probablement pas distinct de toute façon.
Je pense que tout ce qui est nécessaire est d’ajouter à l’énorme requête SQL pour compter à partir de user_badges où la date granted_at est après since ?
Oh, bien que je suppose qu’il faille aussi vérifier et ne compter que les badges qui sont activés.
Je ne suis pas sûr de la difficulté technique de l’ajout de compteurs d’insignes à la page des utilisateurs, mais maintenant que nous autorisons l’ajout d’éléments de répertoire facultatifs à la page des utilisateurs, il semble que les compteurs d’insignes seraient un ajout logique. Cela aiderait à faire de la page des utilisateurs une sorte de classement.
Ce n’est qu’une idée, mais serait-il possible d’ajouter une colonne badges_received à directory_items pour aborder le problème ?
Je recherche un décompte de tous les temps, donc grâce à vos instructions, j’ai extrait cette requête de user_stat.rb et je l’ai exécutée dans l’explorateur de données, ce qui m’a donné une liste de tous les utilisateurs avec leur nombre d’insignes :
SELECT users.id user_id, COUNT(distinct user_badges.badge_id) distinct_badge_count
FROM users
LEFT JOIN user_badges ON user_badges.user_id = users.id
AND (user_badges.badge_id IN (SELECT id FROM badges WHERE enabled))
GROUP BY users.id
ORDER BY distinct_badge_count DESC