Tôi đang thực hiện một hệ thống danh tiếng Stackoverflow giống như trên trang web giải thích lời bài hát rap của tôi, Rap Genius:Cách tốt nhất để thực hiện Stackoverflow kiểu danh tiếng
- Tốt giải thích: 10
- Bad giải thích: -1
- Giải thích rõ nhất về một bài hát: +30
Câu hỏi của tôi là cách triển khai thực hiện điều này. Cụ thể, tôi đang cố gắng quyết định xem tôi có nên tạo một bảng reputation_events
để hỗ trợ tính toán lại danh tiếng hay không hoặc liệu tôi có nên tính toán lại từ đầu bất cứ khi nào tôi cần.
Bảng reputation_events
sẽ có các cột cho:
- tên (ví dụ, "good_explanation", "bad_explanation")
- awarded_to_id
- awarded_by_id
- awarded_at
Bất cứ khi nào điều gì đó xảy ra ảnh hưởng đến danh tiếng, tôi chèn một hàng tương ứng vào reputation_events
. Điều này giúp dễ dàng tính toán lại danh tiếng và tạo ra chuỗi các sự kiện có thể đọc được do con người tạo ra.
Mặt khác, mọi hành động nhất định đều có thể ảnh hưởng đến danh tiếng của nhiều người dùng. Ví dụ: giả sử người dùng A vượt qua người dùng B trên một bài hát cụ thể; dựa trên mục tiêu "Có giải thích nhiều nhất về bài hát", tôi sẽ phải nhớ xóa sự kiện "has_the_most_explanations" gốc của B (hoặc có thể tôi sẽ thêm sự kiện mới cho B?)
Tôi thấy video này tuyệt vời: http://www.youtube.com/watch?v=Yn7e0J9m6rE –
bản sao có thể có của [Làm cách nào để tạo hệ thống "danh tiếng" tương tự như StackOverflow bằng Rails?] (Http: // stackoverflow.com/questions/5719050/how-can-i-create-a-reputation-system-similar-to-stackoverflow-using-rails) – Hauleth