2021年04月04日に参加
学習履歴詳細
体調グラフ機能, 該当期間のy軸の値を吐き出すメソッドに例外処理を実装する
アプリ制作
実現したいこと(1)
Diaryレコードが存在しない期間を指定した際に、app/lib/generate_report/weekly_report.rb
のdata_generator
メソッドでエラーが発生してしまう。レコードが存在しない場合でも値を0としてグラフの描画を行えるようにしたい。
def data_generator(user, column, date_begin) records = user.diaries.group_by_week(week_start: :mon) { |n| n.diary_date } ## レコードが存在しない期間を指定すると, 存在していないキー指定するためnilが返る ## nilの場合にエラー, records[date_begin].map do |diary| diary.send(column) end end
どのように実装するか?
records[date_begin]
がnilかどうか確かめ、nilの時は配列のnilの要素を7個作成して返す。
def data_generator(user, column, date_begin) records = user.diaries.group_by_week(week_start: :mon) { |n| n.diary_date } if recordes[date_begin].present? records[date_begin].map do |diary| diary.send(column) end elsif records[date_begin].nil? 7.times.map { |n| nil } else raise "Error" end end
手動でテスト
- 今週(10/14-10/20)のレコードを削除し, 今週の体調グラフにアクセスし以下の項目を確認
- エラーが発生しないか?
- グラフの縦軸の値が何も表示されていないか?
- テスト成功
実現したいこと(2)
statistics/:column/from/:date_begin/to/:date_end
でグラフ描画をする
どのように実装するか?
lib下のDateConstraintクラスでURIの/:date_begin, /:date_endを Date.valid_date?メソッドで検証する(year, month, dayでマッチデータオブジェクトを生成してメソッドに代入)
コントローラでparams[:date_begin], params[:date_end]をインスタンス変数にセット
コントローラでweekly, monthlyで場合分けしてReportクラスへ渡す
PERIODSに該当する場合はリダイレクト?
その他に実装したこと
/statistics/:column/period/thisMonth(or prevMonth)
でグラフ描画できるようにした。
プロを目指す人のためのRuby入門
- 例外処理について
Ruby
Rails
2019年10月14日(月)
4.0時間