To take Johnathon's explanation of how it works a bit further, here's a reference from Pickaxe:
"If a module is included within a class definition, the module’s constants, class variables, and instance methods are effectively bundled into an anonymous (and inaccessible) superclass for that class." On Jan 8, 7:06 am, Jonathan Stott <[email protected]> wrote: > Hi Luca > > First, I'll explain what the chainable allows, then I'll explain how it does > it. > > A method defined in a chainable block can be overridden in the same > class (not a subclass) and still be called using 'super'. Normally, > defining a method again completely overrides it and doesn't allow > super to be called. This is important for things like attribute > accessors for properties, which people often want to override (e.g. to > change a value before its persisted) but still want the original > functionality. > > It does this by creating an anonymous module which has the method > defined on it, and then including this module into the class. > > I hope this helps! > > Regards > Jonathan > > On 8 January 2011 07:05, Luca B <[email protected]> wrote: > > > > > Hello, > > I'd appreciate your help to understand the use of Chainable: why are > > certain methods defined inside a call to chainable? > > Thanks a lot, > > LucaB > > > -- > > You received this message because you are subscribed to the Google Groups > > "DataMapper" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group > > athttp://groups.google.com/group/datamapper?hl=en. -- You received this message because you are subscribed to the Google Groups "DataMapper" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
