Rails - 如何在reviews_id = user的平均列

时间:2014-06-10 00:06:18

标签: ruby-on-rails postgresql activerecord ruby-on-rails-4 rails-activerecord

我有一个应用程序,其他用户根据不同的特征审核用户。

现在我获得了一列的平均值(让我们说列是"智能"及其整数)

但问题是我提高了平均水平" smart"为所有用户。 我希望它是" smart"的平均值。我正在查看的用户。

这是我现在的代码: 用户控制器:

     @user = User.find(params[:id])
     @smart = Review.average(:smart)

用户显示视图:

<%=@smart%>

1 个答案:

答案 0 :(得分:2)

来自fine Active Record Query Interface guide

  

9次计算
  [...]
  所有计算方法都直接在模型上起作用:

Client.count
# SELECT count(*) AS count_all FROM clients
     

或关系:

Client.where(first_name: 'Ryan').count
# SELECT count(*) AS count_all FROM clients WHERE (first_name = 'Ryan')

注意关系示例中的

如果要计算列子集的平均值,请说:

@smart = Review.where(:user_id => params[:id]).average(:smart)

甚至:

@smart = @user.reviews.average(:smart)

如果您已设置关联。