多个参数的全局平均值
Global average for multiple params
我正在尝试对多个参数进行平均。对于 1 个独特的参数,一切都完美无缺,但我不能对多个参数进行平均。你能帮帮我吗?
@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
对于多个参数,此命令不起作用:未初始化的常量
@ratingall = Commment.where(:camping_id => params[:id]).average(:service, :communication, :qualiteprix, :animation, :proprete, :situation).to_i
顺便说一句,这个方法肯定不是干的....
average 只接受一个列名。
如果您想直接计算平均值,您可能需要编写一个 SQL 查询。
对于代码的 DRYer 版本:
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
@ratings 现在是一个哈希,例如{:service => 3, :communication => 2, ...}
获取平均值的平均值:
@ratingall = @ratings.values.sum.to_f/ratings.size
要获得您认为的特定评级:
@ratings[:service]
迭代评级:
@ratings.each do |category,rating|
# Use category and rating variables.
end
我正在尝试对多个参数进行平均。对于 1 个独特的参数,一切都完美无缺,但我不能对多个参数进行平均。你能帮帮我吗?
@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
对于多个参数,此命令不起作用:未初始化的常量
@ratingall = Commment.where(:camping_id => params[:id]).average(:service, :communication, :qualiteprix, :animation, :proprete, :situation).to_i
顺便说一句,这个方法肯定不是干的....
average 只接受一个列名。
如果您想直接计算平均值,您可能需要编写一个 SQL 查询。
对于代码的 DRYer 版本:
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
@ratings 现在是一个哈希,例如{:service => 3, :communication => 2, ...}
获取平均值的平均值:
@ratingall = @ratings.values.sum.to_f/ratings.size
要获得您认为的特定评级:
@ratings[:service]
迭代评级:
@ratings.each do |category,rating|
# Use category and rating variables.
end