2014-01-15 55 views
0

我正在通過rails教程,並遇到此代碼。我無法理解這種情況下的自我關鍵字可能會做什麼。根據我的理解,self關鍵字是一種創建屬於其創建對象的類函數的方法,但我真的不明白這是什麼意思。軌道協會的上下文中的self關鍵字

的代碼如下:

class User < ActiveRecord::Base 

def feed 

end 

def following?(other_user) 
    self.relationships.find_by(followed_id: other_user.id) 
end 

def follow!(other_user) 
    self.relationships.create!(followed_id: other_user.id) 
end 

end 

誰能給這個一個相當直觀的解釋?我熟悉其他語言的「this」關鍵字,但這看起來像是鐵軌魔術。謝謝!

+0

這是一個Ruby的東西,而不是Rails。 – jcm

回答

1

如果您熟悉'this'這個關鍵詞,那麼'self'幾乎是完全一樣的,也就是'目前的對象'。在'正常'方法中,就像你在例子中顯示的那樣,這意味着'類的實例化',在類方法中,這意味着'類對象本身'。你也可以把它看作'我',然後是'關係',所以'找到我的關係......'

+0

所以在這種情況下,關係不是一個類方法,而是一種常規方法。那麼如果是這樣的話,你可以將自己應用於任何方法並將其與手頭的課程相關聯嗎?我想這與消息傳遞有關 - 我仍然不完全適應這個概念。 – John

+0

這確實是一種「正常」的方法。所以你確實將「關係」的信息傳遞給「自我」,作爲對象本身,而不是它的類。 – Danny

+0

如果你想了解一些關於「自我」的額外閱讀,我會推薦以下文章:http://www.jimmycuadra.com/posts/self-in-ruby – Danny