Je suis tombé sur la méthode sinatra condition et je suis intrigué dans la façon dont cela fonctionne.Que fait réellement Sinatra :: Base.condition?
I ont un morceau de code:
def auth user
condition do
redirect '/login' unless user_logged_in?
end
end
qui vérifie si un utilisateur est connecté pour certaines routes, une route par exemple:
get '/', :auth => :user do
erb :index
end
La méthode user_logged_in?
est définie dans un assistant fichier dans le répertoire lib du projet:
def user_logged_in?
if session[:user]
@user = session[:user]
return @user
end
return nil
end
Donc, la question est: Comment le bloc condition
sait-il ce que contient le session[:user]
, alors que sur l'itinéraire get '/'
le session[:user]
n'a même pas été défini?
La méthode condition
est définie dans la page GitHub suivante: sinatra base condition method Merci.
je vous remercie beaucoup pour une explication prudente. Mes compétences en lecture Ruby ont été totalement perplexes lorsque j'ai regardé la méthode 'condition'. Même si la lecture du code me semble toujours très douloureuse, vous m'avez permis de comprendre ce qui se passe. À votre santé. –