お世話になっております。
現在railsでアプリを作っているのですが、Controllerに下記のような処理があります。railsのような MVCフレームワークではcontrollerをなるべくスリムにして、モデルやヘルパーにビジネスロジックを詰め込んだほうがいいという話を聞いたのですが、具体的な実現方法がわかりません。
自分の所感としては、モデルに入れる処理は検索系の処理や、DBに関わるビジネスロジックだと思っています。しかし、日付のフォーマットや下記のコードのように、データベースのある値を集計して、合計を出す処理(~~_amountの部分です。)などはどこに書けばいいのでしょうか??
ruby
1 def index 2 @wdays = %w[日 月 火 水 木 金 土] 3 if params[:year_month] 4 inputs = params[:year_month][0].split('-').map(&:to_i) 5 @start_date = Date.new(inputs[0], inputs[1], 1) 6 @end_date = Date.new(inputs[0], inputs[1], -1) 7 @month = inputs[1] 8 else 9 day = Date.today 10 @start_date = Date.new(day.year, day.month, 1) 11 @end_date = Date.new(day.year, day.month, -1) 12 @month = day.month 13 end 14 @data = [] 15 restraint_amount = 0 16 work_amount = 0 17 break_amount = 0 18 (Date.parse(@start_date.to_s)..Date.parse(@end_date.to_s)).each do |date| 19 @date = date 20 record = current_user.attendances.where(work_in: date.all_day).first 21 if record 22 restraint_amount += record.restraint_time 23 work_amount += record.work_time 24 break_amount += record.break_time 25 end 26 record ||= current_user.attendances.build 27 @data.append record 28 end 29 @restraint_data = time_to_view_data(restraint_amount) 30 @work_data = time_to_view_data(work_amount) 31 @break_data = time_to_view_data(break_amount) 32 end 33 # ruboc
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/11 05:13
2022/01/11 05:15
2022/01/11 05:17
2022/01/11 06:50
2022/01/11 06:53