私は優れた勤務時間表アプリケーションを持っています。すべてが正常に動作するようになりました。リファクタリングの時間です。特に一部のビューは非常に複雑です。そのため、たとえばデコレータを使用してそれらをクリーンアップしたいと考えています。
もう 1 つのことは、かなりの量のサービス オブジェクトを使用していることです。それらは素晴らしく、モデルをきれいに保ちますが、ビューでそれらを使用することは望ましくありません。ここでリファクタリングのアドバイスを探しています。ビュー コードの次のフラグメントを考えてみましょう。
.row
.span12#timesheet
- days = @timesheet_builder.get_days_in_month
%table.table.days
%tbody
- (1..days).each do |day_nr|
- activity_date = Date.new(@timesheet.year, @timesheet.month, day_nr)
- if @timesheet_builder.is_workday?(day_nr)
- day_type = "workday"
- else
- day_type = "non_workday"
%tr.day(class=day_type)
%td.date{ "data-title" => "#{I18n.t('.timesheet.day_nr')}" }
.day_abbr= @timesheet_builder.get_day_name(day_nr)
.day_nr= day_nr
ここに表示されているのは、1 か月の日数を取得し、その日が稼働日かどうかを確認するための優れた TimesheetBuilder サービス オブジェクトです。結果に基づいて、テーブル内の行は異なる色または他のマークアップを取得します。
うまく機能しますが、これをリファクタリングしてビューをよりシンプルにするにはどうすればよいですか? デコレータでサービス オブジェクトを使用できますか?