Un tutorial che sto seguendo ha nella sottodirectory app/helpers
il seguente modulo SessionsHelper utilizzato da molti controller e viste. Ma dov'è la variabile di istanza current_user
memorizzata quando viene creata per la prima volta? Qual è la classe dell'oggetto in cui è memorizzata?Dove sono memorizzate le variabili di istanza in un modulo helper di Rails?
Quando un controller invoca per la prima volta il metodo current_user
, viene creata la variabile di istanza current_user
. Quando una vista richiama quindi il metodo current_user
come è già presente una variabile di istanza current_user
? self
impostato sull'oggetto controller durante il rendering della vista?
module SessionsHelper
...
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
...
end
penso che tu possa seguire questo link http://stackoverflow.com/questions/5575188/rails-tutorial-9-3-3-current-user – Shrikant1712
la tua domanda è buona - in effetti, ce ne sono molte (qualcuno direbbe _unnecessary_) magia durante il rendering. Non conosco il processo in dettaglio, ma mi sono ricordato di aver letto da qualche parte che il contesto della vista copiò molte cose dal controller, incluse le variabili di istanza. Penso, ma non sono sicuro, che il contesto vista deleghi anche qualsiasi metodo che non conosce al controller. Ciò richiede una ricerca più approfondita ... Penso che passerò un po 'di tempo sfogliando la fonte dei binari, e dovresti fare lo stesso: D –