「出席をマークする」ためにコントローラーとモデルの間にサービス オブジェクトを作成したので、次のようにコントローラー アクション用のオブジェクトが 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 では、コントローラにネストされたサービス クラスではなく、そのファイルがサービス クラスを定義することを期待しています。
モジュールの名前は利用可能ですが、これに規則があるかどうかはわかりません。全体として、最も気になるのは、コントローラー内でそのクラスを定義したいが、別のファイルで(おそらくそのネストを使用して)定義したいということです。モジュールをコントローラーに含めることもできますが、それは私のポイントではありません。レールでサービス オブジェクトの名前空間を設定するためのベスト プラクティスはありますか?