在我的Rails 5应用程序中,我在app/services
内有一个自定义类,我需要访问当前的子域。
现在,各个方法可能如下所示:
...
def self.is_valid? req
blacklist.exclude? req.subdomain
end
但这意味着我每次都需要传递request
。这不是最优的,所以我想知道如何从类中访问rails request
对象。
答案 0 :(得分:2)
通常只能从控制器和视图访问请求对象。你可以像其他任何对象一样将请求传递给需要它的方法(依赖注入),但是你的服务对象真的需要整个请求对象吗?为什么不直接传递子域名字符串?在我看来,服务对象不应该知道请求对象,因为这样的行为可能会更好地从控制器方法处理。
答案 1 :(得分:1)
是的,它是一个特定于控制器的方法,需要在其他任何地方作为参数传递。这就是构建Rails的方式 - 全局变量将在所有客户端之间共享,并且控制器基于每个客户端进行实例化。因此,没有全局“请求”对象,也没有内置方式列出所有当前连接的用户。