我在看這個Ruby代碼和他們做參考:有self.current_user和@current_user之間的差異?
@current_user
和
self.current_user
的區別是什麼?
http://code.google.com/p/openplaques/source/browse/trunk/www/lib/authenticated_system.rb
我在看這個Ruby代碼和他們做參考:有self.current_user和@current_user之間的差異?
@current_user
和
self.current_user
的區別是什麼?
http://code.google.com/p/openplaques/source/browse/trunk/www/lib/authenticated_system.rb
@current_user
是instance variable。 self.current_user
調用返回該實例變量在第10行的方法中,第一填充它,如果它是目前NIL。
@current_user
訪問而self.current_user
呼籲self
的current_user
方法的對象的實際屬性。
這意味着你可以做這樣的事情:
def current_user
@current_user.first_name
end
所以現在訪問@current_user
仍然會給你的財產,但self.current_user
會給你回的只有名字。
在你的具體的例子,他們正在使用對象緩存設置@current_user
屬性僅在第一次被訪問。這意味着,如果@current_user
是零,它會做(login_from_session || login_from_basic_auth || login_from_cookie)
否則只會返回現有對象,而無需重新初始化。
@current_user
取消引用名爲@current_user
的實例變量。
self.current_user
將消息發送到:current_user
self
。