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记录/对象.可能会更快地达到数量级.
几天前我问过同样的问题
我的解决方案和@Drew Johnson建议的那样(User.all.index current_user).但我需要"查询解决方案",@ Vlad Zloteanu给了我很好的想法:
User.count(:order => "balance", :conditions => ['balance < (?)', current_user.balance])
Run Code Online (Sandbox Code Playgroud)
这是大型数据表的快速查询解决方案.
| 归档时间: |
|
| 查看次数: |
3366 次 |
| 最近记录: |