我有一个ActiveRecord User
对象集合。 User
有一个属性engagement
,它是一个浮点数。假设users = User.all.order(engagement: :desc)
返回1000条记录而current_user
是User
中的users
对象,我想知道current_user
中的位置或索引users
无需再次查询数据库或使用each_with_index
等枚举器方法,这种方法很慢。这可能吗?
答案 0 :(得分:5)
收集ids
并找到current_user.id
index = User.all.order(engagement: :desc).map(&:id).index(current_user.id)
你可以选择id来避免地图
index = User.order(engagement: :desc).pluck(:id).index(current_user.id)
答案 1 :(得分:1)
@BKSpurgeon 您可以使用类似的东西在数据库中完全做到这一点
User.where("engagement < ?", current_user.engagement).count + 1