2013-07-20 73 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:在方法名
    • 隐式接收器中的接收器:在方法名
接收机