2013-09-17 2 views
1

У меня вопрос простой: Что такое переменная область в пределах routes.rb в Rails. Конкретно: Могу ли я ссылаться на переменные ApplicationController в этом конкретном файле: ? Как и во взглядах?Что такое переменная область маршрутов.rb в RoR?

Я спрашиваю, потому что я не могу получить эту работу лямбды:

root to: "users#edit", constraints: lambda { |req| [email protected]_user.nil? }, as: :authenticated_root 

@current_user объявлен в модуле включены в application_controller.rb, но это не видно в routes.rb

Предположительно, я пропускаю некоторые важные страницы в руководстве ...

+0

_Can Я ссылаюсь на переменные 'ApplicationController' в этом конкретном файле? _ Ответ: __no, вы не можете. – zeantsoi

ответ

2

Нет, ограничения маршрута не имеют доступа к переменным, установленным в контроллере.

Вы действительно должны переместить свою логику на контроллер в before_action (> = Rails 4) или before_filter (< = Rails 3.2).

+0

Спасибо. Это то, чего я хотел избежать ... Я знаю, что есть изобретательность, но я такой человек хотел изобрести колесо почти на каждом шагу ... – Gobol

+1

@Gobol Почему вы хотите этого избежать? Обычно вы хотите, чтобы ваш контроллер перенаправлялся на форму входа, если пользователь не прошел аутентификацию. Если вы полностью отказываетесь от доступа к маршруту, это уже не вариант. –

+1

@ Gobol. Кроме того, подумайте о том, как Warden проверять подлинность, если вы не хотите что-то раздутое, как Devise. –

Смежные вопросы