Samouczek, który obserwuję, znajduje się w podkatalogu app/helpers
w poniższym module SessionsHelper, który jest używany przez wiele kontrolerów i widoków. Ale gdzie jest przechowywana instancja zmiennej current_user
podczas jej tworzenia? Jaka jest klasa obiektu, w którym jest przechowywany?Gdzie przechowywane są zmienne instancji w module pomocniczym Rails?
Po pierwszym wywołaniu kontrolera metoda current_user
tworzy zmienną instancji current_user
. Kiedy widok wywołuje metodę current_user
w jaki sposób jest już obecna zmienna instancji current_user
? Czy podczas renderowania widoku jest ustawiony obiekt kontrolera na self
?
module SessionsHelper
...
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
...
end
Myślę, że możesz kliknąć ten link: http://stackoverflow.com/questions/5575188/rails-tutorial-9-3-3-current-user – Shrikant1712
twoje pytanie jest dobre - w rzeczywistości jest dużo (niektórzy twierdzą, że niepotrzebne)) magia podczas renderowania. Nie znam szczegółowo tego procesu, ale pamiętałem, że przeczytałem gdzieś, że kontekst widoku skopiował wiele rzeczy ze sterownika, w tym zmienne instancji. Myślę, ale nie jestem pewien, że kontekst widoku deleguje również każdą metodę, której nie zna kontroler. To wymaga bardziej dogłębnych badań ... Myślę, że spędzę trochę czasu przeglądając źródło railsów, i powinieneś zrobić to samo: D –