ふわ

2021年04月04日に参加

学習履歴詳細

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

自分のやりたいことに近い記事のRubyの文法を理解すること。
わからないところはRubyの公式ドキュメントや「プロを目指す人のRuby入門」を読むことで少しずつ理解できた。

アプリ制作

体調グラフ機能

  • ~~Diaryのテストデータ生成~~
    • ~~直近3ヶ月分を毎日(グラフで可視化するため)~~
    • ~~rails consoleでテストコード実行~~
  • ~~Diaryモデルのインスタンスメソッド定義~~
    • ~~DiaryインスタンスのWeek numberを返す~~
  • 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

                            15_Sun(0) 16_Mon(1) 17_Tue(2) 18_Wed(3) 19_Thu(4) 20_Fri(5) 21_Sat(6)
activity                    1                   2                   -1              -2           1               0                  1             
mood                    1                   2                   -1              -2           1               0                  1   
appetite                    1                   2                   -1              -2           1               0                  1   

必要なデータ
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入門

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

2019年09月18日(水)

5.2時間