在rails app上的ruby中使用带有.pluck的.average?

时间:2017-04-20 09:02:05

标签: ruby-on-rails activerecord

在我的应用程序中,我想查看我的用户的平均纸张使用权重,该权重注册到Heavy类。

user模型has_many :paperspaper模型belongs_to :user

这是我到目前为止所得到的:@heavy_users_testing = User.where(industry_type: 'Heavy').joins(:papers).where("papers.paper_type = 'Officepaper'").pluck(:paper_weight)

我不确定在active record .average的哪个位置可以获得重类别用户的平均办公纸重量?

有人可以告诉我吗?

1 个答案:

答案 0 :(得分:3)

您可以在avg

中使用sql pluck功能
@heavy_users_testing = User.where(industry_type: 'Heavy')
  .joins(:papers)
  .where(papers: { paper_type: 'Officepaper' } )
  .pluck('avg(paper_weight)')

如果您需要/需要EACH用户的平均值,您需要执行group

@heavy_users_testing = User.where(industry_type: 'Heavy')
  .joins(:papers)
  .where(papers: { paper_type: 'Officepaper' } )
  .group(:user_id)
  .pluck('avg(paper_weight)')