eco*_*gic 1 namespaces ruby-on-rails service-object
我刚刚在控制器和模型之间写了一个服务对象来"标记出勤",所以现在我有一个控制器动作对象,如下所示:
class BookingAttendancesController
def mark_attending
attendance_marker = BookingAttendances::AttendanceMarkerService.new params, current_entity
result = attendance_marker.call
# flash msg etc
end
end
Run Code Online (Sandbox Code Playgroud)
和服务对象(当前实现):
# app/services/booking_attendances/attendance_marker_service.rb
module BookingAttendances
class AttendanceMarkerService
def initialize(params, entity)
# ...
end
def call
# ...
end
# ...
end
end
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想在控制器类中命名服务对象,但rails希望该文件定义服务类,而不是嵌套在控制器中的服务类.
该模块的名称可用,但我不确定是否有这样的约定.总的来说,我觉得最困扰我的是我真的想在控制器中定义该类,但是在一个单独的文件中(可能有嵌套).我可以将模块包含在控制器中,但这不是我的观点.在rails中是否存在命名空间服务对象的最佳实践?
您的业务逻辑在控制器中执行,但如果您在服务中提取它,则抽象应该是真实的.
我的意思是你只在服务中使用你的模型.这条路:
你有一个独立于控制器的服务
你有一个可重复使用的服务
然后,可重用服务没有理由在控制器名称之后进行命名空间化,在模型名称后面命名空间更有意义.所以你做的很好.
顺便说一句,即使它在文件夹中有点无聊和丑陋,app/services/services
我也会把我的服务放进去,这样我就可以命名Services
模块中的所有服务.
归档时间: |
|
查看次数: |
1247 次 |
最近记录: |