estoy poniendo en práctica un sistema de reputación Stackoverflow-como en mi sitio de letras de rap explicación, Rap Genius:mejor manera de implementar la reputación de estilo Stackoverflow
- Buena explicación: 10
- Mala explicación: -1
- tener la mayoría de las explicaciones en una canción: +30
Mi pregunta es cómo implementar esto. Específicamente, estoy tratando de decidir si debo crear una tabla de reputation_events
para ayudar en el recálculo de la reputación, o si debería volver a calcular desde cero siempre que lo necesite.
La tabla de reputation_events
tendría columnas para:
- nombre (por ejemplo, "good_explanation", "bad_explanation")
- awarded_to_id
- awarded_by_id
- awarded_at
Siempre sucede algo que afecta la reputación, inserto una fila correspondiente en reputation_events
. Esto hace que sea fácil recalcular la reputación y generar una secuencia de eventos legible por el ser humano que generó la reputación de una persona determinada.
Por otro lado, cualquier acción dada podría afectar la reputación de múltiples usuarios. Por ejemplo, supongamos que el usuario A supera al usuario B en una canción determinada; basado en el objetivo de "Tener la mayor cantidad de explicaciones sobre una canción", tendría que recordar eliminar el evento original de "has_the_most_explanations" de B (o quizás agregaría un nuevo evento para B?)
Encontré este video genial: http://www.youtube.com/watch?v=Yn7e0J9m6rE –
posible duplicado de [¿Cómo puedo crear un sistema de "reputación" similar a StackOverflow usando Rails?] (Http: // stackoverflow.com/questions/5719050/how-can-i-create-a-reputation-system-similar-to-stackoverflow-using-rails) – Hauleth