request.env["omniauth.auth"] returns 如果不作为参数调用则为零

request.env["omniauth.auth"] returns nil if not called as argument

我正在尝试使用 facebook 进行简单的 omniauth 调用。如果我像这样捕获请求哈希,一切正常:

def facebook
    user = User.from_facebook(request.env["omniauth.auth"])
    if user.persisted?
      ...
    else
      ...
    end
  end

但是如果我尝试将请求哈希保存在变量中,我会得到 request = nil。例如:

def facebook
  omni_request = request.env["omniauth.auth"]
  user = User.from_facebook(omni_request)
  if user.persisted?
    ...
  else
    ...
  end
end

上面的例子失败了,因为 request 是 nil,我不能对 nil 的东西调用 env。

有谁知道为什么在 from_facebook class 方法之外调用时 request 会是 nil?

第三行应该是:user = User.from_facebook(omni_request) ?