Rails 3:选择评分最高的对象?

时间:2011-08-13 14:27:50

标签: ruby-on-rails

模型文章有一个属性:评级。每当有人对文章进行评分并且计算平均评级并将其存储在数据库中时,此属性就会更新。

现在我希望获得最高评级的文章。但是如何?

2 个答案:

答案 0 :(得分:3)

@article = Article.order('rating desc')。limit(1)

答案 1 :(得分:2)

这两个中的任何一个都可以完成这项工作,具体取决于您喜欢哪种风格:

@article = Article.find(:first, :order => 'rating DESC')

@article = Article.order('rating DESC').first

修改

如果您已经有一个数组@articles,并且您有充分的理由不能或不应该运行单独的SQL查询,那么您可以执行以下操作:

@top_article = @articles.sort { |a1,a2| a2[:rating] <=> a1[:rating] }.first

<强>过时:

我不知道,如果你只保存数据库中的平均值,你如何计算每次新投票后的平均评分?如果当前的平均评级为5,并且我提交了新的评级10,则必须知道评级的数量才能计算新的平均值。如何做到这一点可能与您的问题的解决方案相关。