From: Jano Svitok Date: 2007-06-29T17:06:03+09:00 Subject: Re: Modules and Class --- what is that ? -- On 6/29/07, Adwin Wijaya wrote: > Hi ... > > I am newb in Ruby world. I am get used with PHP and Java before, > therefore I got confused when I learn ruby syntax > I have a question what is the difference between Modules and Class ? > > Also, how to know all methods that accessible from ActiveRecord::Base > and ActiveRecord::Migration ? I read the API documentation, but I > couldnt find ActiveRecord::Base has validation methods > (validates_presence_of, validate, etc) but I found it on somewhere else > Class/Modules. > It also happen with Migration, I couldnt found it. > > I read from the source (.rb) as well ... and I have no clue ... > Thank you ! Module is a (partial) equivalent to Java's Interface. It can contain constants and methods (and, unlike Interfaces, method implementation as well). You cannot derive from it, so it's kind of dead end. You can however, include one module into another. So they are kind of building bricks from which you can compose your class' behaviour. Now to the methods: There are several kinds of methods: instance methods, class methods and singleton class methods. (They are in fact the same, but they differ to what object they belong and how you invoke them). These validation methods are class methods of the ActiveRecord::Base, and you can find them in some ClassMethods module somewhere in the ActiveRecord sources [1]. This module is then included into AR::Base class. Many of the "magic" methods are implemented using method_missing, that is called whenever a method is not found, before raising exception (e.g. find_by_...) To see the what methods a class has, startup rails console [2], and issue ActiveRecord::Base.methods.sort (for class methods) and ActiveRecord::Base.instance_methods.sort (for instance methods) I will leave up to you to lookup the details of [1] and [2] ;-) J.