【发布时间】:2023-02-10 13:34:15
【问题描述】:
我对简单命令 gem 和服务对象的用法感到困惑。我们通过在 app 目录中创建一个 services 文件夹然后在其中创建 classes 来使用服务。我们通过在应用程序目录中创建命令文件夹并在其中创建类来使用简单的命令。这两种方法最终都会创建服务对象,但是如果它们提供相同的东西,它们之间有什么区别
【问题讨论】:
标签: ruby-on-rails ruby
我对简单命令 gem 和服务对象的用法感到困惑。我们通过在 app 目录中创建一个 services 文件夹然后在其中创建 classes 来使用服务。我们通过在应用程序目录中创建命令文件夹并在其中创建类来使用简单的命令。这两种方法最终都会创建服务对象,但是如果它们提供相同的东西,它们之间有什么区别
【问题讨论】:
标签: ruby-on-rails ruby
这听起来像是贵公司运作方式的一种非常具体的方式。一般来说,服务对象只有一个公共方法,它总是被调用,用于解决一个业务问题。像这样:
class CreateAuditor
def self.perform(auditor_params, user, company)
.....
end
private
def any_other_method_used_in_perform end
end
“命令”听起来像是一种反模式,实际上应该是一个服务对象。我需要这个“命令”类看起来像什么的例子来尝试猜测。但真的只是问了一位同事。服务对象和“命令”都是您通常不会学习的自编模式,并且不是标准 Ruby on Rails 设置的一部分。
【讨论】:
我不确定有什么区别。我听说过一些参考 Commands 作为用于排队任务的东西。然而,如果你访问SimpleCommandsgithub,你会看到他们首先声明的是:“一种在 Ruby 中构建和使用服务对象(又名命令)的简单、标准化的方法”
所以,我必须同意@TTD 的观点,他们是同一个人。
【讨论】: