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
我一直在尝试将相同的功能放入命名范围,但我似乎无法弄明白。
有什么建议吗?
答案 0 :(得分:1)
named_scope :top_commenters, :limit => 10, :order => "total_score DESC"