您如何访问“请求”'自定义类的对象(或类似的)?

时间:2016-04-04 23:28:04

标签: ruby-on-rails ruby ruby-on-rails-5

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

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

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

但这意味着我每次都需要传递request。这不是最优的,所以我想知道如何从类中访问rails request对象。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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