2015-10-04 14 views
1

我正在爲我的用戶創建一個高分榜。我正在使用redis-objects gem來完成這項任務。如何在redis中使用排序的唯一ID來顯示用戶?

class User < ActiveRecord::Base 
    include Redis::Objects 
    sorted_set :leaderboard, global: true 
    after_update :update_leaderboard 

    def update_leaderboard 
     self.class.leaderboard[id] = score 
    end 
end 

用這種方法,我得到了用戶標識並按照他們的分數排序,每次我更新分數。

User.leaderboard.revrange(0,2) #["3", "1", "2"] 

我的問題:

我如何可以使用排序ID的陣列,並顯示基於該順序我的用戶?比方說,我想排序我的用戶在索引頁面。

class UserController < ApplicationController 
    def index 
    @users = User.all 
    end 
end 

謝謝。

+0

使用Redis的道具,這是它應該如何使用! –

回答

0

find方法將採取一個數組,但排序是一個問題......如果你不介意在應用級排序......

class UserController < ApplicationController 
    def index 
    arr = User.leaderboard.revrange(0,2) 
    @users = User.find(arr).sort_by{|user| arr.index user.id} 
    end 
end 

有人可能有更好的解決辦法?

相關問題