问题
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