1

「出席をマークする」ためにコントローラーとモデルの間にサービス オブジェクトを作成したので、次のようにコントローラー アクション用のオブジェクトが 1 つあります。

class BookingAttendancesController
  def mark_attending
    attendance_marker = BookingAttendances::AttendanceMarkerService.new params, current_entity
    result = attendance_marker.call
    # flash msg etc
  end
end

サービス オブジェクト (現在の実装):

# app/services/booking_attendances/attendance_marker_service.rb
module BookingAttendances
  class AttendanceMarkerService
    def initialize(params, entity)
      # ...
    end
    def call
      # ...
    end
    # ...
  end
end

理想的には、コントローラ クラス内でサービス オブジェクトの名前空間を指定したいと考えていますが、Rails では、コントローラにネストされたサービス クラスではなく、そのファイルがサービス クラスを定義することを期待しています。

モジュールの名前は利用可能ですが、これに規則があるかどうかはわかりません。全体として、最も気になるのは、コントローラー内でそのクラスを定義したいが、別のファイルで(おそらくそのネストを使用して)定義したいということです。モジュールをコントローラーに含めることもできますが、それは私のポイントではありません。レールでサービス オブジェクトの名前空間を設定するためのベスト プラクティスはありますか?

4

1 に答える 1