Je suis mise en œuvre d'un système de réputation comme Stackoverflow sur mon paroles de rap site explication, Rap Genius:La meilleure façon de mettre en œuvre la réputation de style Stackoverflow
- bonne explication: 10
- explication Bad: -1
- ont le plus d'explications sur une chanson: +30
Ma question est de savoir comment mettre en œuvre. Spécifiquement, j'essaye de décider si je devrais créer une table de reputation_events
pour aider au re-calcul de réputation, ou si je devrais juste recalculer à partir de zéro chaque fois que j'ai besoin.
Le tableau de reputation_events
aurait des colonnes pour:
- nom (par exemple, "good_explanation", "bad_explanation")
- awarded_to_id
- awarded_by_id
- awarded_at
Chaque fois que quelque chose se passe qui affecte la réputation, j'insère une ligne correspondante dans reputation_events
. Cela facilite le recalcul de la réputation et la génération d'une séquence d'événements lisible par l'homme qui a généré la réputation d'une personne donnée. En revanche, une action donnée peut affecter la réputation de plusieurs utilisateurs. Par contre, une action donnée peut affecter la réputation de plusieurs utilisateurs. Par exemple, supposons que l'utilisateur A dépasse l'utilisateur B sur une chanson donnée; basé sur l'objectif "Avoir le plus d'explications sur une chanson", je devrais me rappeler de supprimer l'événement original "has_the_most_explanations" de B (ou peut-être ajouterais-je un nouvel événement pour B?)
J'ai trouvé cette vidéo géniale: http://www.youtube.com/watch?v=Yn7e0J9m6rE –
duplication possible de [Comment puis-je créer un système de "réputation" semblable à StackOverflow en utilisant Rails?] (Http: // stackoverflow.com/questions/5719050/how-can--create-a-reputation-system-similar-to-stackoverflow-using-rails) – Hauleth