0

Userという列を持つモデルがあるとしますpoint

User他のすべての行と比較してインスタンスのランキングを取得するにはどうすればよいですか?

4

1 に答える 1

2

ユーザーのランクは、自分よりも多くのポイントを持つ他のユーザーの数に 1 を加えたものと考えることができます。Mischa がコメントで指摘したように、これの適切な場所は、次のように User モデル自体になります。

def ranking
   User.where('point > ?', point).count + 1
end

次に、次のように呼び出します。

Rank: <%= @user.ranking %>

これには、同じランクで同じポイント数のユーザーをランク付けするという欠点があります。その場合の「タイブレーカー」を決定する必要があります。

于 2013-03-29T06:06:59.123 に答える