您如何从自定义 类 访问 'request' 对象(或类似对象)?

How do you access the 'request' object (or similar) from custom classes?

在我的 Rails 5 应用程序中,我在 app/services 中有一个自定义 classes,我需要访问当前的子域。

现在,各个方法可能如下所示:

...
def self.is_valid? req
  blacklist.exclude? req.subdomain
end

但这意味着我每次都需要传入request。这不是最优的,所以我想知道如何从 class.

中访问 rails request 对象

请求对象通常只能从控制器和视图访问。您可以像任何其他对象一样将请求传递给需要它的方法(依赖注入),但是您的服务对象真的需要整个请求对象吗?为什么不只传递子域字符串?在我看来,服务对象不需要知道请求对象,因为这样的行为可能最好由控制器方法处理。

是的,它是特定于控制器的方法,需要作为参数传递到其他任何地方。这就是 Rails 的构建方式——全局变量将在所有客户端之间共享,控制器将在每个客户端的基础上实例化。因此,没有全局 "request" 对象,也没有内置的方式来列出所有当前连接的用户。