我有一个设置,其中有 10 个属性接受导轨形式的浮点数。每个属性还与我的模型中的一个值相关联。如果在表单上为多个属性输入了一个数字,我需要创建一个加权平均值。
例如,如果我有 10 种产品,每种产品在我的模型中都有价格。在表格中,用户可以输入每个产品的数量(产品数量)。我想计算那些输入金额的产品的加权价格。
那么如何创建一个加权平均值来检查哪些产品输入了金额?
此代码检索模型上所有为真的属性:
@model = Model.find(params[:id)
@model.attributes.select{|k,v| (v.is_a?(TrueClass) || v.is_a?(FalseClass)) && v}
如果您想要虚假的,只需执行以下操作:
@model.attributes.select{|k,v| (v.is_a?(TrueClass) || v.is_a?(FalseClass)) && !v}
不知道这是否是你要找的,但也许它可以让你的头脑清醒一点。
columns_names = ['a','b','c','d'] # array of name of the columns
obj = Model.find(:id) # find the object with id
# loop and get column values that are set
values = columns_names.inject([]) do |arr,column_name|
arr << obj.column_name if params[column_name].eql?"true" # collect the values if the column set
arr
end
#get average
if values.blank?
# no column selected
else
avg = values.reduce(:+)/values.size
end
检查此以获取有关加权平均的帮助