如何从rails 3中的模型获取实际的HTTP请求?

fif*_*uri 6 ruby-on-rails-3

我需要从rails 3中的模型中获取实际的请求.我知道并不总是处理请求,但是如果有请求,我希望能够访问它.怎么可能达到.在控制器的情况下,请求方法就位.但现在我需要从一个"较低级别"访问请求.你能给我一些线索如何在Rails中做到吗?

Kal*_*dae 24

您可以将请求存储在线程中,然后在任何地方访问它.这是高清一个黑客,你真的不应该打破常规MVC这种方式,如果一个模型是真正的要求取决于你总是可以请求传递到模型作为参数.

但是让你的请求在任何地方都可用的hack都适用于application_controller.rb:

before_filter :store_request_in_thread

def store_request_in_thread
  Thread.current[:request] = request
end
Run Code Online (Sandbox Code Playgroud)

在您的模型somemodel.rb或您希望已存在请求的任何地方,您只需访问该请求:

def something
  request = Thread.current[:request]
end
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,是的,它可能有点hackie,但目前我没有看到其他方式使ActiveRecord基于请求来自的域名行为不同.我正在考虑在中间件中捕获和存储当前请求. (3认同)