我在我的 Rails 应用程序中的 User.rb 模型上有一个方法,它根据用户对网站的各种贡献返回声誉分数。
def total_votes
answerkarma = AnswerVote.joins(:answer).where(answers: {user_id: self.id}).sum('value')
contributionkarma = Contribution.where(user_id: self.id).sum('value')
answerkarma + contributionkarma
end
在我想象中的艺术家控制器的索引操作中,有时我检索所有艺术家,有时我只检索那些按位置过滤的艺术家
def index
if params[:province_id]
province = params[:province_id]
province = province.to_i
@artistsbyprovince = User.artists_by_province(province)
else
@artists = User.where(:onionpealer => true)
end
end
如果我按位置过滤,用户模型会调用此范围方法
scope :artists_by_province, lambda {|province|
joins(:contact).
where( contacts: {province_id: province},
users: {onionpealer: true})
}
然而,我想做的是,在这两种情况下(无论是按位置过滤还是检索所有用户)都是通过 total_votes 方法的结果对艺术家的检索进行排序,以便出现点数最高的艺术家在顶部。
你能建议我怎么做吗?先感谢您。