上下文: 試圖產生與用於每個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轉換爲剛剛從日期時間約會? –