我遇到了sinatra 条件方法,并对它是如何工作感到困惑.
我有一段代码:
def auth user
condition do
redirect '/login' unless user_logged_in?
end
end
Run Code Online (Sandbox Code Playgroud)
其中检查用户是否记录了某些路由,示例路由:
get '/', :auth => :user do
erb :index
end
Run Code Online (Sandbox Code Playgroud)
该方法user_logged_in?在项目的lib目录中的辅助文件中定义:
def user_logged_in?
if session[:user]
@user = session[:user]
return @user
end
return nil
end
Run Code Online (Sandbox Code Playgroud)
所以,问题是:condition块是如何知道session[:user]包含什么的,在get '/'路径session[:user]上甚至没有设置?
该condition方法在以下GitHub页面中定义:sinatra基本条件方法
谢谢.