1

我有一个具有 votes_count 的视频模型。我已经有一个获取当前排名的方法。

def rank
  videos = Video.order('votes_count DESC')
  videos.index(self)+1
end

有没有使用更少cpu的更简单的解决方案?

提前致谢

4

2 回答 2

1

只需计算超过当前视频投票的视频数量。这个数字加一将是您的等级。

def rank
  Video.where('votes_count > #{votes_count}').count + 1
end
于 2012-08-02T20:46:11.297 回答
1

对于优化操作,您可以使用 de sql 查询运算符 MAX 并将工作转移到您的数据库引擎。

def rank
  ret =  Video.select('max(votes_count) as rank')
  ret.rank
end
于 2012-08-03T00:18:23.857 回答