Extending activeRecord::Base


I want to add some behaviour to ActiveRecord::Base, so I did this:

1) Added ActiveRecordExtensions.rb in lib directory 2) Added the following code to this file

module ActiveRecordExtended

class ActiveRecord::Base    def date_formatter_for(field_name)      module_eval(        "def solicitation_date_formatted \n" +   ... end end

3) Added the following line to environment.rb

  require 'ActiveRecordExtensions'

4) In every model that I want to use the extension I add the following line

    include ActiveRecordExtended

It works well, I have all the functions available in my model. But, validations just stop working. all validates_presence_of just don't work. Anybody knows what could be this?

Thanks in advance.


  It really depends what your code is in your module. Could you post that to the list? Also, ActiveRecord::Extensions is already an existing plugin, which adds plugin architecture to ActiveRecord. You may not want to use that name (or maybe you do),



I guess I found a solution. My code now is like this:

module ActiveRecord    def Base.date_formatter_for(field_name)      module_eval(        "def solicitation_date_formatted \n" +        " solicitation_date.strftime '%d/%m/%Y' if solicitation_date != nil \n" +        "end \n\n"      )

     module_eval(        "def solicitation_date_formatted=(value) \n " +        "self.solicitation_date = Date.strptime(value,'%d/%m/%Y') \n " +        "end \n "      )    end end

Notice that I deleted the line

class ActiveRecord::Base

from the declaration. I think I, in some way, passed through the inheritances of the class by redeclaring it. Declaring just the methods works fine.

Thank you