Rails: как я могу получить доступ к объекту запроса вне помощника или контроллера? - PullRequest
7 голосов
/ 05 апреля 2010

В моем файле application_helper.rb есть такая функция:

def internal_request?
  server_name = request.env['SERVER_NAME']
  [plus more code...]
end

Эта функция необходима в контроллерах, моделях и представлениях. Итак, я поместил этот код в служебный файл в каталоге lib/. Однако это не сработало: я получил жалобы на то, что request не определен.

Как получить доступ к объекту request в файле в каталоге lib/?

1 Ответ

2 голосов
/ 24 апреля 2012

Самое простое, что может сработать, это передать объект запроса методу.

def internal_request?(request)
 server_name = request.env['SERVER_NAME']
 [plus more code...]
end

Предполагается, что когда бы этот метод ни вызывался, был сделан запрос, и вы можете передать его методу.

Я пытаюсь придумать сценарий, в котором модель должна будет вызывать этот метод напрямую. Вероятнее всего, вы захотите проверить, был ли это Internal_request в вашем контроллере (пометьте его как helper_method в вашем контроллере, если он вам нужен в вашем представлении), а затем скажите вашей модели, что это был internal_request.

...