Procオブジェクトを使い, 指定された期間における各カラムの値の配列を生成する

アプリ制作

実現したいこと

体調グラフ機能

各カラムに1つボタンを作成し, ボタンのON/OFFでカラムの表示/非表示を切り替えられるようにする。

どのように実現するか

指定された期間における各カラムの値の配列を生成し, Viewに渡す。

本日はrails consoleで考えたコードが動作するのかを試した。

# Diaryレコードをグループ化
records = User.diaries.group_by_week(week_start: :mon) { |n| n.diary_date }

# 期間内のDiaryレコードを1つずつ取り出し, カラムの値を配列で返す
get_column_value_proc = Proc.new do |column, records|
   records.map do |record|
    record.send(column)
   end
 end
#=> #<Proc:0x00007ff445dba088@(irb):47>

# Y軸の値のハッシュ(キー: カラム, バリュー: カラムの値の配列)を返す
 columns.each do |column|
    y_axis_value[column] = get_column_value_proc.call(column, records[date_begin])
 end
#=> [:activity, :mood, :appetite]

 y_axis_value
#=> {:activity=>[1, -1, 2, 2, 2, -1, 2], :mood=>[2, -2, -2, 1, 0, 2, 0], :appetite=>[2, 2, -2, 2, 2, 1, 1]}

プロを目指す人のためのRuby入門