Как да направите преди всеки друг маршрут освен двойка?

Добре, ето я сделката. Трябва да направя проверка дали потребителят е влязъл преди всяка заявка за получаване или публикуване, с изключение на входа, регистрацията и маршрута до дома.

В момента имам кода по-долу за всеки маршрут, който искам да се провери.

redirect '/' if !check_login?

Проверих документите за начин да направя това, засега имам само това и не работи.

before do, except => ['/','/login','/signup']
   if request.request_method == "POST"
        redirect '/' if !check_login?
   end
end

Има ли начин това да стане? Моля да ме уведомите.


person sidegeeks    schedule 14.08.2014    source източник
comment
Синтаксисът ви е грешен, би било before except => ['/','/login','/signup'] do ... — но няма условие except. Кои документи гледахте с това?   -  person matt    schedule 14.08.2014


Отговори (1)


Можете да използвате отрицателен маршрут за изпреварване:

before %r{^(?!(/|/login|/signup)$)} do
   if request.request_method == "POST"
        redirect '/' if !check_login?
   end
end

Това ще съответства на всеки маршрут с изключение на /, /login и /signup.

person Josh Voigts    schedule 14.08.2014