小编LJ.*_*LJ.的帖子

Sinatra :: Base.condition实际上做了什么?

我遇到了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基本条件方法 谢谢.

ruby session block sinatra

6
推荐指数
1
解决办法
1066
查看次数

标签 统计

block ×1

ruby ×1

session ×1

sinatra ×1