Active Record で一連のレコードをグループ化しようとしているので、たとえば、各レコードの数量属性を正規化するためにいくつかの計算を行うことができます。
ユーザーが日付と数量を入力します。日付は一意ではないため、日付ごとに 10 ~ 20 個の数量がある場合があります。個々のレコードごとではなく、毎日の合計のみを処理する必要があります。n
それから、最高値と最低値を決定した後、基本的には通常 10 で割ってそれぞれを変換します。
これは私が今していることです:
def heat_map(project, word_count, n_div)
return "freezing" if word_count == 0
words = project.words
counts = words.map(&:quantity)
max = counts.max
min = counts.min
return "max" if word_count == max
return "min" if word_count == min
break_point = (max - min).to_f/n_div.to_f
heat_index = (((word_count - min).to_f)/break_point).to_i
end
これは、すべての単語数の表を表示する場合にうまく機能しますが、ヒート マップを、毎日の累計を表示するカレンダーに適用しようとしています。これは明らかに日数を合計していないため、通常のスケールから外れた数値になってしまいます。
正規化を行う前に、単語数をグループ化し、日ごとに合計する方法がわかりません。group_by を実行してから map 呼び出しを追加しようとしましたが、未定義のメソッド エラーが発生しました。何か案は?また、単語数を正規化するためのより良い/よりクリーンな方法にもオープンです。