User
という列を持つモデルがあるとしますpoint
。
User
他のすべての行と比較してインスタンスのランキングを取得するにはどうすればよいですか?
User
という列を持つモデルがあるとしますpoint
。
User
他のすべての行と比較してインスタンスのランキングを取得するにはどうすればよいですか?
ユーザーのランクは、自分よりも多くのポイントを持つ他のユーザーの数に 1 を加えたものと考えることができます。Mischa がコメントで指摘したように、これの適切な場所は、次のように User モデル自体になります。
def ranking
User.where('point > ?', point).count + 1
end
次に、次のように呼び出します。
Rank: <%= @user.ranking %>
これには、同じランクで同じポイント数のユーザーをランク付けするという欠点があります。その場合の「タイブレーカー」を決定する必要があります。