HOWTO在Ruby on rails上按平衡对项目进行排名

fen*_*nec 11 ruby activerecord ruby-on-rails

我正在实施一个投注系统,每个用户都有一个余额,我如何使用activerecord方法找到用户的排名?谢谢你的帮助.

Dre*_*son 20

要获得用户的排名,

Users.all(:order => "balance").index(a_particular_user)
Run Code Online (Sandbox Code Playgroud)

这应该为您提供所有用户数组中特定用户的索引(排名)(按余额排序).


ejo*_*aud 10

如果您有很多用户,这是一个稍微有效的解决方案:

Users.order(:balance).pluck(:id).index(a_particular_user_id)`
Run Code Online (Sandbox Code Playgroud)

这样,您的应用程序将获取n个整数ID,而不是拉动和实例化整个User记录/对象.可能会更快地达到数量级.


fl0*_*00r 5

几天前我问过同样的问题

对象在数据库中的位置

我的解决方案和@Drew Johnson建议的那样(User.all.index current_user).但我需要"查询解决方案",@ Vlad Zloteanu给了我很好的想法:

User.count(:order => "balance", :conditions => ['balance < (?)', current_user.balance])
Run Code Online (Sandbox Code Playgroud)

这是大型数据表的快速查询解决方案.