上下文: 试图产生与用于每个created_at
一天分贝表1个元件的阵列。每个元素是来自created_at
天的记录的points
(整数)列的平均值。 这将稍后绘制成每天显示点数的平均值。生成从数据库表(Rails)的每日平均值数组
结果: 我已经成功地做到了这一点,但感觉就像不必要的代码量来产生所需的结果。
代码:
def daily_avg
# get all data for current user
records = current_user.rounds
# make array of long dates
long_date_array = records.pluck(:created_at)
# create array to store short dates
short_date_array = []
# remove time of day
long_date_array.each do |date|
short_date_array << date.strftime('%Y%m%d')
end
# remove duplicate dates
short_date_array.uniq!
# array of avg by date
array_of_avg_values = []
# iterate through each day
short_date_array.each do |date|
temp_array = []
# make array of records with this day
records.each do |record|
if date === record.created_at.strftime('%Y%m%d')
temp_array << record.audio_points
end
end
# calc avg by day and append to array_of_avg_values
array_of_avg_values << temp_array.inject(0.0) { |sum, el| sum + el }/temp_array.size
end
render json: array_of_avg_values
end
问题: 我觉得这是一个常见的extraction
问题需要通过大量的应用程序来解决,所以我不知道是否有解决一个已知的重复模式像这样?
还是更理想的解决方法?
(我几乎没有一个初级开发者,所以你可以分享任何建议,将不胜感激!)
将created_at转换为刚刚从日期时间约会? –