mam wdrożenie Stackoverflow-podobnego systemu reputacji piosenki rap na moim miejscu wyjaśnienie Rap Genius:najlepszym sposobem wdrożenia Stackoverflow stylu reputacji
- Dobre wyjaśnienie: +10
- Bad wyjaśnienie: -1
- mają najbardziej wyjaśnień w piosence: +30
Moje pytanie jest jak zaimplementować to. W szczególności staram się zdecydować, czy powinienem utworzyć tabelę o numerze reputation_events
, aby pomóc w ponownym obliczaniu reputacji, czy też powinienem ją przeliczyć od nowa, ilekroć zajdzie taka potrzeba.
Tabela reputation_events
musiałby kolumny:
- nazwy (np "good_explanation", "bad_explanation")
- awarded_to_id
- awarded_by_id
- awarded_at
Kiedykolwiek coś się dzieje, co wpływa na reputację, wstawiam odpowiedni wiersz do reputation_events
. Dzięki temu łatwo jest ponownie obliczyć reputację i wygenerować czytelną dla człowieka sekwencję zdarzeń, które wygenerowały reputację danej osoby.
Z drugiej strony każda dana czynność może mieć wpływ na reputację wielu użytkowników. Np. Załóżmy, że użytkownik A wyprzedza użytkownika B w danej piosence; na podstawie celu "Mam najwięcej wyjaśnień na temat utworu", musiałbym pamiętać, aby usunąć oryginalne wydarzenie B "has_the_most_explanations" (a może dodaję nowe wydarzenie dla B?)
Znalazłem to wideo świetnie: http://www.youtube.com/watch?v=Yn7e0J9m6rE –
możliwy duplikat [Jak utworzyć system "reputacji" podobny do StackOverflow za pomocą Rails?] (Http: // stackoverflow.com/questions/5719050/how-can-i-create-a-reputation-system-similar-to-stackoverflow-using-rails) – Hauleth