2010-12-09 4 views

Répondre

7

@current_user est un instance variable. self.current_user appelle la méthode sur la ligne 10 qui renvoie cette variable d'instance, en la remplissant d'abord si elle est actuellement nulle.

4

@current_user accède à la propriété réelle de l'objet alors que self.current_user appelle la méthode current_user sur self.

Cela signifie que vous pourriez faire quelque chose comme ceci:

def current_user 
    @current_user.first_name 
end 

Alors maintenant accès @current_user vous donnera toujours la propriété mais self.current_user vous redonneront le premier nom.

Dans votre exemple spécifique, ils utilisent la mise en cache d'objet pour définir la propriété @current_user uniquement la première fois que vous y accédez. Cela signifie que si @current_user est nul, cela fera (login_from_session || login_from_basic_auth || login_from_cookie) sinon il retournera simplement l'objet existant sans le réinitialiser.

1
@current_user 

déréférence la variable d'instance appelée @current_user.

self.current_user 

envoie le message :current_user à self.

Questions connexes