redefining the method belongs_to in ActiveRecord::Base

Hi. I've tried to redefine the method belongs_to in ActiveRecord::Base,
so every time a model is defined as belonging to :attachment, it should
have some additional methods. I tried to do an alias of belongs_to, but
this was not successful. The error message in Webrick was

Booting WEBrick...

./script/../config/../lib/ActiveRecordExtensions.rb:67: undefined
method `belongs_to' for module `ActiveRecord' (NameError)

The code with problem is:

  alias :attachment_belongs_to :belongs_to
  def belongs_to(association_id, options={})
    self.attachment_belongs_to(association_id,options)
    if association_id == :attachment

     code = <<EOS
  alias :tmp_attach= :attachment=
  def attachment=(content)
    if content.class.name == 'Attachment' #old functionality
      self.tmp_attach=(content)
    else
      if content.class.name.match(/^Hash/) && content["content"] &&
content["content"].original_filename != ""
        if self.attachment
          self.attachment.update_attributes(content)
        else
          attach = Attachment.new(content)
          attach.save
          self.tmp_attach=(attach)
        end
      end
    end
  end

  alias :tmp_destroy :destroy
  def destroy
    attach = self.attachment
    self.tmp_destroy
    attach.destroy if attach
  end
EOS
      module_eval(code)
    
    end
  end

Hi --

Hi. I've tried to redefine the method belongs_to in ActiveRecord::Base,
so every time a model is defined as belonging to :attachment, it should
have some additional methods. I tried to do an alias of belongs_to, but
this was not successful. The error message in Webrick was

Booting WEBrick...

./script/../config/../lib/ActiveRecordExtensions.rb:67: undefined
method `belongs_to' for module `ActiveRecord' (NameError)

The code with problem is:

alias :attachment_belongs_to :belongs_to

I suspect the problem was actually before this. It sounds like you
had:

   module ActiveRecord

when you wanted:

   class ActiveRecord::Base

(I haven't looked at the rest of the code in detail but I think that's
what's triggering this error.)

David