ActiveRecord根据属性的关系值找到关系中记录的位置(索引)

时间:2016-11-21 21:41:24

标签: sql ruby-on-rails activerecord

我有一个ActiveRecord User对象集合。 User有一个属性engagement,它是一个浮点数。假设users = User.all.order(engagement: :desc)返回1000条记录而current_userUser中的users对象,我想知道current_user中的位置或索引users无需再次查询数据库或使用each_with_index等枚举器方法,这种方法很慢。这可能吗?

2 个答案:

答案 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