我怎样才能找到一个项目在列表中的位置?

How can I find an item's place in a list?

我正在尝试定义一个实例方法来查找项目在列表中的位置。该列表是 Thing.all.order(:hardness).reverse。该项目在列表中的位置应为 def rank 的值。因此,例如,具有第三高 'hardness' 的 "Thing" 的 rank 值应为 3。

这是我开始的:

def rank
  Thing.all.order(:hardness).reverse.each_with_index 
  .....
end

但是我对如何完成它一无所知。我至少在正确的轨道上吗?


def hardness
  self.defeats - self.wins
end

不是更容易计算所有更难的记录吗?

def rank
  self.class.where('hardness > ?', self.hardness).count + 1
end

一切都取决于你想如何处理相同硬度的物品。