Me he encontrado con el sinatra condición método y estoy perplejo en la forma en que funciona.¿Qué hace Sinatra :: Base.condition en realidad?
I tienen una pieza de código:
def auth user
condition do
redirect '/login' unless user_logged_in?
end
end
que comprueba si un usuario se registra para ciertas rutas, un ejemplo de ruta:
get '/', :auth => :user do
erb :index
end
El método user_logged_in?
se define en un ayudante archivo en el directorio lib del proyecto:
def user_logged_in?
if session[:user]
@user = session[:user]
return @user
end
return nil
end
Entonces, la pregunta es: ¿Cómo sabe el bloque condition
qué contiene el session[:user]
, cuando en la ruta get '/'
el session[:user]
ni siquiera se ha configurado?
El método condition
se define en la siguiente página de GitHub: sinatra base condition method Gracias.
muchas gracias por una explicación cuidadosa. Mis habilidades de lectura de Ruby estaban totalmente perplejas cuando miré el método 'condición '. Aunque leer el código todavía se siente bastante doloroso, me has permitido entender qué está sucediendo. Aclamaciones. –