2012-08-02 50 views
1

我有一个拥有votes_count的视频模型。我已经有了一个获取当前等级的方法。获取当前投票等级的快速方法?

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

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

在此先感谢

回答

1

只计算比当前视频投票次数多的视频。这个数字加1就是你的等级。

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

非常感谢! – Oliver 2012-08-02 21:04:04

1

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

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