获得当前投票排名的快捷方式?

时间:2012-08-02 20:32:43

标签: mysql ruby-on-rails ruby-on-rails-3

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

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

是否有更简单的解决方案使用更少的CPU?

提前致谢

2 个答案:

答案 0 :(得分:1)

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

def rank
  Video.where('votes_count > #{votes_count}').count + 1
end

答案 1 :(得分:1)

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

def rank
  ret =  Video.select('max(votes_count) as rank')
  ret.rank
end