Rails: Overriding ActiveRecord association method

Posted by seaneshbaugh on Stack Overflow See other posts from Stack Overflow or by seaneshbaugh
Published on 2010-05-23T05:36:57Z Indexed on 2010/05/23 5:40 UTC
Read the original article Hit count: 301

Is there a way to override one of the methods provided by an ActiveRecord association?

Say for example I have the following typical polymorphic has_many :through association:

class Story < ActiveRecord::Base
    has_many :taggings, :as => :taggable
    has_many :tags, :through => :taggings, :order => :name
end


class Tag < ActiveRecord::Base
    has_many :taggings, :dependent => :destroy
    has_many :stories, :through => :taggings, :source => :taggable, :source_type => "Story"
end

As you probably know this adds a whole slew of associated methods to the Story model like tags, tags<<, tags=, tags.empty?, etc.

How do I go about overriding one of these methods? Specifically the tags<< method. It's pretty easy to override a normal class methods but I can't seem to find any information on how to override association methods. Doing something like

def tags<< *new_tags
    #do stuff
end

produces a syntax error when it's called so it's obviously not that simple.

© Stack Overflow or respective owner

Related posts about ruby-on-rails

Related posts about ruby