@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.