2013-07-20 113 views
0

有RoR中下面的代碼:在Ruby類執行方法

class Product < ActiveRecord::Base 
    validates :title, :description, :image_url, presence: true 
end 

我讀過一些書的Ruby,但我並沒有在OOP段看到關於執行類類的方法的任何信息(不是其他方法)身體!它是什麼?它是如何工作的?此方法何時執行?請在這個問題上說清楚。謝謝。

+0

你需要去* codeacadamy * ..他們解釋這些.. –

+0

元編程Ruby書 - 它有所有答案! –

回答

2

調用方法時會執行。在課堂體內,self成爲該課程。作爲接收器的self可以省略,所以validates這裏與Product.validates ...self.validates ...相同。 validatesActive::Base上的類方法,在類定義期間被調用。


在我的理解中, self和一個隱式接收器意味着不同的東西,這取決於它的位置。

module Foo 
    # module body 
    def # method name 
    # method body 
    end 
end 
  1. 在模塊主體
    • self:模塊
    • 隱式接收器:模塊
  2. 在方法名
    • self:模塊
    • 隱式接收機:類
  3. 的一個實例在方法體
    • self:在方法名
    • 隱式接收器中的接收器:在方法名
接收機