Как получить фактический HTTP-запрос от модели в рельсах 3? - PullRequest
6 голосов
/ 04 марта 2011

Мне нужно получить фактический запрос от модели в рельсах 3. Я знаю, что запрос не всегда обрабатывается, но если он есть, я бы хотел получить к нему доступ. Как это возможно достичь. В случае контроллеров, метод запроса на месте. Но теперь мне нужно получить доступ к запросу с немного «более низкого уровня». Можете ли вы дать мне какие-нибудь подсказки, как это сделать в Rails?

1 Ответ

24 голосов
/ 04 марта 2011

Вы можете сохранить запрос в ветке, а затем получить к нему доступ в любом месте. Это определенно хак, так как вам не следует нарушать соглашение MVC таким образом, и если модель действительно зависит от запроса, вы всегда можете передать запрос в модель в качестве параметра.

но взломать ваш запрос везде - это application_controller.rb:

before_filter :store_request_in_thread

def store_request_in_thread
  Thread.current[:request] = request
end

и в вашей модели somemodel.rb или где-либо еще, где вы ожидаете, что запрос уже существует, вы можете просто получить доступ к запросу:

def something
  request = Thread.current[:request]
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...