我有2个型号的用户和评级如下:
class User < ActiveRecord::Base
has_many :ratings
end
class Rating < ActiveRecord::Base
belongs_to :user
end
每个用户从1到10收到多个评级。我想返回平均评分为&gt;的所有用户到目前为止,我已经得到了这个......
User.joins(:ratings).where('rating > ?', 5)
但该代码会返回任何评分大于5的用户。我希望用户的平均评分大于5。
答案 0 :(得分:1)
如果您要查看所有用户,为什么要先加入?
@avg = Ratings.group(:user_id).average("rating") #returns hash which contains arrays
@avg.each do |avg| #0 is user_id, 1 is value
puts avg[0] if avg[1] > 5
end
答案 1 :(得分:0)
答案 2 :(得分:0)