【发布时间】:2012-01-19 16:08:55
【问题描述】:
Rails 3.0.3 应用程序(卡在 Dreamhost 共享服务器上)。
我有一个页面显示从一个模型的数据子集计算的平均值。
现在,每个平均值都是单独计算的,如下所示:
从视图上看,我使用 Devise 身份验证提供的 current_user 帮助器来调用位于用户模型中的平均方法,如下所示:
<%= current_user.seven_day_weight_average %>
<%= current_user.fourteen_day_weight_average %>
<%= current_user.thirty_day_weight_average %>
这是用户模型中的公共方法和平均方法:
def seven_day_weight_average
calculate_average_weight(7)
end
def fourteen_day_weight_average
calculate_average_weight(14)
end
def thirty_day_weight_average
calculate_average_weight(30)
end
. . .
private
def calculate_average_weight(number_days)
temp_weight = 0
weights_array = self.weights.find_all_by_entry_date(number_days.days.ago..Date.today)
unless weights_array.count.zero?
weights_array.each do |weight|
temp_weight += weight.converted_weight
end
return (temp_weight/weights_array.count).round(1).to_s
else
return '0.0'
end
end
这似乎不是很有效 - 查询数据库以获取每个计算的平均值。
如何通过一个数据库查询计算这些平均值并将其提供给页面?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3