Using .average with .pluck in ruby on rails app?

血红的双手。 提交于 2019-12-25 09:03:18

问题


In my app I want to see the average paper use weight for my users which registers to the Heavyclass.

The user model has_many :papers and the paper model belongs_to :user

here is what I got so far: @heavy_users_testing = User.where(industry_type: 'Heavy').joins(:papers).where("papers.paper_type = 'Officepaper'").pluck(:paper_weight)

I'm not sure where to but the active record .average to get the average Officepaper weight for users in the Heavy category?

Can someone advise me please?


回答1:


You can use the sql avg function inside pluck

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

If you want/need the average for EACH user, you need to do a group

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


来源:https://stackoverflow.com/questions/43514890/using-average-with-pluck-in-ruby-on-rails-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!