首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个参数的全局平均

多个参数的全局平均
EN

Stack Overflow用户
提问于 2016-11-17 21:48:54
回答 1查看 69关注 0票数 1

我正在尝试做一个平均多个参数。对于一个唯一的params,所有工作都很完美,但我不能做多个params平均值。你能帮我吗?

代码语言:javascript
复制
@ratingservice = Comment.where(:camping_id => params[:id]).average(:service).to_i
       @ratingcommunication = Comment.where(:camping_id => params[:id]).average(:communication).to_i
       @ratingqualiteprix = Comment.where(:camping_id => params[:id]).average(:qualiteprix).to_i
       @ratinganimation = Comment.where(:camping_id => params[:id]).average(:animation).to_i
       @ratingproprete = Comment.where(:camping_id => params[:id]).average(:proprete).to_i
       @ratingsituation = Comment.where(:camping_id => params[:id]).average(:situation).to_i

对于多个参数,此命令不起作用:未初始化常量

代码语言:javascript
复制
@ratingall = Commment.where(:camping_id => params[:id]).average(:service, :communication, :qualiteprix, :animation, :proprete, :situation).to_i

顺便说一句,这种方法不一定干.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-17 22:09:13

平均值只接受一个列名。

如果要直接计算平均值的平均值,则可能需要编写SQL查询。

对于代码的DRYer版本:

代码语言:javascript
复制
where_camping = Comment.where(:camping_id => params[:id])
@ratings = [:service, :communication, :qualiteprix, :animation, :proprete, :situation].map{|key|
  [key, where_camping.average(key).to_i]
}.to_h

@评级现在是一个哈希,例如{:=> 3,:communication => 2,.}

要得到平均数的平均值:

代码语言:javascript
复制
@ratingall = @ratings.values.sum.to_f/ratings.size

若要在您的观点中获得特定的评级:

代码语言:javascript
复制
@ratings[:service]

要迭代评级:

代码语言:javascript
复制
@ratings.each do |category,rating|
  # Use category and rating variables.
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40665656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档