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
参考
- https://stackoverflow.com/questions/4389395/how-do-i-get-a-date-from-a-week-number
- https://rubikitch.hatenadiary.org/entry/20080502/tap
- https://ref.xaio.jp/ruby/classes/enumerable/group_by
- https://www.toptal.com/ruby-on-rails/decoupling-rails-components
プロを目指す人のRuby入門
- ハッシュとシンボルの詳細
||=
や!!
などのイディオムについて
Ruby
Rails
2019年09月18日(水)
5.2時間