2015-12-14 19 views
1

我試圖建立一個基於選票的排行榜(上Ruby on Rails的)建立一個排行榜與先前現在的位置差異,如排名第二(+6)

我沒有排名和增量值。 我的表有300〜記錄

post id, votes, ranking, increment 
1,  22,  1,  +3 
2,  16,  2,  -1 
3,  13,  3,  +6 
4,  7,  4,  -2 

我很困惑如何建立增量部分一樣,許多職位怎麼還是基於以前的現在的位置上去了。

我想知道我該如何構建這個 我應該使用一個每日/每小時運行的cron作業,根據投票更新排名增量嗎?

如何計算排名和增量?我應該有prev_ranking列而不是增量嗎?

感謝

+0

樣本是否太大以至用戶'.sort'?在新排名後,按平均排名排序。 – miler350

+0

嗨,謝謝,我實際上試圖計算排名和prev排名..任何想法如何寫一個sql來計算基於投票欄? – Federico

+1

在這種情況下,我認爲以前的排名效果很好。然後只是比較兩列。邏輯會更簡單。在你的控制器中,當投票被觸發時。使用當前索引更新以前的排名列。然後,添加新的投票。然後排序。然後根據新索引添加更新當前排名欄。比較。 – miler350

回答

2

一個建議,你所能做的就是像Resque使用後臺任務庫隊列作業和Resque調度在後臺

運行有了,你可以做一個每日/每小時的任務來看待目前排名,根據新的投票計算新的排名,然後找到新排名與當前排名之間的差異以獲得排名變化

+0

謝謝!我實際上對實際的SQL應該如何更新排名並計算prev排名感到困惑。對此有什麼幫助? – Federico