0

我有一个设置,其中有 10 个属性接受导轨形式的浮点数。每个属性还与我的模型中的一个值相关联。如果在表单上为多个属性输入了一个数字,我需要创建一个加权平均值。

例如,如果我有 10 种产品,每种产品在我的模型中都有价格。在表格中,用户可以输入每个产品的数量(产品数量)。我想计算那些输入金额的产品的加权价格。

那么如何创建一个加权平均值来检查哪些产品输入了金额?

4

2 回答 2

1

此代码检索模型上所有为真的属性:

@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}

不知道这是否是你要找的,但也许它可以让你的头脑清醒一点。

于 2012-08-24T17:44:43.743 回答
1
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

检查此以获取有关加权平均的帮助

http://www.dzone.com/snippets/weighted-mean

于 2012-08-24T18:07:38.723 回答