Hi, I have these two ActiveRecord models: UserEvent and CoordinateEvent. The models are extended with the module MapEvent. MapEvent includes some class methods and some instance methods. Now, I want both models to use ActiveRecord's serialize (http://api.rubyonrails.org/classes/ActiveRecord/Ba...). My MapEvent looks something like the following. I simply can't figure where to put "serialize :column_name": [code] module MapEvent def self.included(base) base.extend(ClassMethods) end def a_method end module ClassMethods def another_method end end end [/code] How do I call the serialize method from the above context? An extra question: Also, it suddenly hit me, that instead of a module I could write MapEvent as a class that inherits from ActiveRecord instead of a module - and then let UserEvent and CoordinateEvent inherit from MapEvent? Would you recommend this? Generally speaking, when should you use mixins/module and when you use inheritance? Hope my questions are clear. Thanks in advance!
on 2009-01-04 17:13
on 2009-01-04 17:26
Well - I think I now can answer both of my questions myself. In case anyone is curious here is what I've learned: In order to call the serialize method that the two models inherited from AR write this: module MapEvent def self.included(base) base.serialize :command end end This makes sense as serialize is just an instance method of the models. And regarding the module/inheritance question I found an answer reading these article (including the comments): http://bibwild.wordpress.com/2007/04/10/ruby-and-m... Modules should generally speaking be used when you just want to add methods to your concrete classes. If you want to add new class or instance variables use "normal" inheritance.