我刚刚在控制器和模型之间写了一个服务对象来“标记出勤”,所以现在我有一个用于控制器操作的对象,如下所示:
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 期望该文件定义服务类,而不是嵌套在控制器中的服务类。
该模块的名称可用,但我不确定是否有此约定。总的来说,我想最困扰我的是我真的想在控制器中定义那个类,但是在一个单独的文件中(可能有嵌套)。我可以将模块包含在控制器中,但这并不是我的重点。在 Rails 中命名空间服务对象是否有最佳实践?