190918 Statisticコントローラの実装(体調グラフ描画のためのデータ生成)

アプリ制作

体調グラフ機能

  • Diaryのテストデータ生成
    • 直近3ヶ月分を毎日(グラフで可視化するため)
      • rails consoleでテストコード実行
  • Diaryモデルのインスタンスメソッド定義
  • Statisticコントローラ実装のためにあれこれ調べ、試す(未完)
Ruby Date.strftime('')
# %w - Day of the week (Sunday is 0, 0..6)
# %W - Week number of the year.  The week starts with Monday.  (00..53)

# 生成したいグラフ
例)
Week number: 37
↓みたいな

Image from Gyazo

必要なデータ
Year: 何年の?
Week number : 何番目の週?
Intial day of the week: 何日から
Last day of the week: 何日まで

activity : その週の最初の日から終わりの日までのそれぞれの日におけるactivityの値の配列
mood: 上に同じ
appetite: 上に同じ
#Diary.weekで週番号を返すメソッドを定義済み

user = User.last
diaries = user.diaries

diaries.group_by { |item| item.week }
# => { "week_number" => [ diary1, diary2,,,,]}

current_user.entries.group_by(&:week).each do |week, diaries|
end 
# weekに週番号の文字列、diariesにその週のdiaryインスタンスの配列が入っている
# diariesの配列を受け取って、activity, mood, appetiteの値を取り出すメソッドを定義しないといけない。

# メソッドのイメージ
activity = []
mood = []
appetite = []

(週の最初の日..週の最後の日).each do |day|
            activity    << diary.find(day).activity
end 

参考

プロを目指す人のRuby入門

  • ハッシュとシンボルの詳細
  • ||=!!などのイディオムについて