gpt4 book ai didi

ruby-on-rails - rails 命名空间服务对象

转载 作者:行者123 更新时间:2023-12-04 16:52:48 25 4
gpt4 key购买 nike

我刚刚在 Controller 和模型之间写了一个服务对象来“标记出勤”,所以现在我有一个 Controller Action 的对象如下:

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

理想情况下,我想在 Controller 类中命名服务对象,但 rails 希望该文件定义服务类,而不是嵌套在 Controller 中的服务类。

该模块的名称可用,但我不确定是否有相关约定。总的来说,我想最让我烦恼的是我真的很想在 Controller 中定义那个类,但是在一个单独的文件中(可能带有嵌套)。我可以将模块包含在 Controller 中,但这并不是我的重点。在 Rails 中命名空间服务对象有最佳实践吗?

最佳答案

您的业​​务逻辑在 Controller 中执行,但如果您在服务中提取它,抽象应该是真实的。

我的意思是你只在服务中使用你的模型。这条路:

  • 您拥有独立于 Controller 的服务
  • 你有一个可重复使用的服务

  • 一个可重用的服务没有理由在 Controller 名称之后命名空间,在模型名称之后命名空间更有意义。所以你做的很好。

    顺便说一句,即使文件夹中有点无聊和丑陋,我确实将我的服务放在 app/services/services 中。 ,这样我就可以在 Services 中命名所有服务模块。

    关于ruby-on-rails - rails 命名空间服务对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19108933/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com