我的第一帖,留个记号
刚刚学写 Rails, 遇到一个问题 : 我按下面的方法把 @users_robotic_catch 进行排序,
@users_robotic_catch = User.all( :conditions => 'robotic_catch != 0', :order => 'robotic_catch DESC', :limit => '10' )
如果我想得到其中一个 user 在这个排序中的具体位置,也就是排名,我应该怎么查询?
求教,谢谢!
each_with_index
#1 楼 @gaicitadie 是我没表述清楚,, 需要的 current_user 的排名
听上去像序列搜索问题。用二分搜索?
@users_robotic_catch.to_a.index(current_user) + 1
User.where("robotic_catch > ?", current_user.robotic_catch).order(robotic_catch: :desc).count + 1
#5 楼 @Rei 谢谢
#5 楼 @Rei 点赞
#5 楼 @Rei 咦..这已经不需要 order 了吧..
#8 楼 @ruohanc 奥,是哦。
User.where("robotic_catch > ?", current_user.robotic_catch).count + 1
#9 楼 @Rei
那为什么不可以
User.where("robotic_catch >= ?", current_user.robotic_catch).count
呢?
#10 楼 @zw963 如果有好几个同分,排位就会靠后,不符合直觉。比如除去第一名,二、三名同分,一般说并列第二而不是并列第三。
#11 楼 @Rei
哦~ 了解了。谢谢。