Mi sono imbattuto nel metodo sinatra e sono perplesso su come funziona.Cosa fa in realtà Sinatra :: Base.condition?
Ho un pezzo di codice:
def auth user
condition do
redirect '/login' unless user_logged_in?
end
end
che controlla per vedere se un utente è connesso per alcune rotte, un percorso esempio:
get '/', :auth => :user do
erb :index
end
Il metodo user_logged_in?
è definito in un aiutante file nella directory lib del progetto:
def user_logged_in?
if session[:user]
@user = session[:user]
return @user
end
return nil
end
Quindi, la domanda è: In che modo il blocco condition
sa cosa contiene session[:user]
quando sulla linea get '/'
non è stato ancora impostato il session[:user]
?
Il metodo condition
è definito nella seguente pagina GitHub: sinatra base condition method Grazie.
grazie mille per una spiegazione accurata. Le mie capacità di lettura di Ruby sono state totalmente messe da parte quando ho osservato il metodo 'condition'. Anche se leggere il codice mi sembra ancora abbastanza doloroso, mi hai permesso di capire che cosa sta succedendo. Saluti. –