Overrite ActiveRecord Methods in Plugin

I'm trying to write an acts_as_ plugin for my rails app, and I need to override valid? and update_attributes. No matter what I do, I can't get it to call my plugin methods, but it will call my method_missing fine.

-from acts_as_option_record.rb module ActsAsOptionRecord   def self.included(base)     base.extend ClassMethods     base.extend InstanceMethods   end

  module ClassMethods     def acts_as_option_record       include ActsAsOptionRecord::InstanceMethods       extend ActsAsOptionRecord::ClassMethods     end

  end

  module InstanceMethods

    def update_attributes (arguments)       debugger       #stuff     end

    def valid?       debugger       #more stuff     end   end end

-from init.rb ActiveRecord::Base.send(:include, ActsAsOptionRecord)

Never ever override basic methods, if you want to do this, what you really need is alias_method_chain :slight_smile:

Imagine that you want to do some logging before and after calling the :update_attributes method, here's how it would look like:

module ActsAsLoggable

    def self.included( base )

        base.send( :include, InstanceMethods )         base.alias_method_chain :update_attributes, :acts_as_loggable

    end

    module InstanceMethods

        def update_attributes_with_acts_as_loggable( attributes )             puts "before update attributes"             self.update_attributes_without_acts_as_loggable( attributes )             puts "after update attributes"         end

    end

end