rails将类方法转换为命名范围

时间:2009-11-06 01:38:44

标签: ruby-on-rails named-scope

Rails新手在这里。我正在尝试将一些类方法转换为named_scopes。我的应用程序结构类似于带有用户注释的博客应用程序。每个评论模型都具有由其他用户评分确定的评分属性。我希望能够拥有一个命名范围,该范围返回总评分最高的十大用户,这些评分来自他们所做评论的所有评分的总和。

要获得总得分,我已创建此方法:

class User < ActiveRecord::Base
  # total score for all comments made by a particular user
  def total_score
    comments.sum(:score)
  end
end

然后我将前十个分数作为一种类方法使用:

class User < ActiveRecord::Base
  # The top ten users ranked by total score
  def self.top_commenters
    find(:all, :limit => 10).sort_by {|commenter| commenter.total_score}.reverse 
  end
end

我一直在尝试将相同的功能放入命名范围,但我似乎无法弄明白。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

named_scope :top_commenters, :limit => 10, :order => "total_score DESC"