Я столкнулся с методом sinatra condition и был озадачен тем, как он работает.
У меня есть фрагмент кода:
def auth user
condition do
redirect '/login' unless user_logged_in?
end
end
Который проверяет, зарегистрирован ли пользователь для определенных маршрутов, пример маршрута:
get '/', :auth => :user do
erb :index
end
Метод user_logged_in?
определен во вспомогательном файле в каталог lib проекта:
def user_logged_in?
if session[:user]
@user = session[:user]
return @user
end
return nil
end
Итак, вопрос:
Как блоку condition
известно, что содержится в сеансе [: user]
, когда в get '/'
маршрутизирует сеанс [: user]
даже не был установлен?
Метод condition
определен на следующей странице GitHub: метод основного условия sinatra
Спасибо.