The plugin in this case is acts_as_taggable_on_steroid, which has
classes Tag, Tagging and TagList, and a module
ActiveRecord::Acts::Taggable which adds the acts_as_taggable method to
all classes (so that when the call it they have some other modules
included at the class and instance level, giving them the acts as
taggable methods).
I have some extra methods i want to add to the Tag class and also to to
taggable classes. But, i can’t work out how to set this up in such a
way as my additional Tag methods sit on top of the exisiting Tag
methods, for example.
There must be a standard procedure for this situation - can anyone help
me out? (i’m guessing the best practise isn’t to physically add my own
methods into the plugin’s classes/modules)
Thanks
max
The plugin has this structure for the acts_as_taggable methods -
module ActiveRecord #:nodoc:
module Acts #:nodoc:
module Taggable #:nodoc:
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def acts_as_taggable
has_many :taggings, :as => :taggable, :dependent => :destroy,
:include => :tag
has_many :tags, :through => :taggings
before_save :save_cached_tag_list
after_create :save_tags
after_update :save_tags
include ActiveRecord::Acts::Taggable::InstanceMethods
extend ActiveRecord::Acts::Taggable::SingletonMethods
alias_method_chain :reload, :tag_list
end
...
end
module SingletonMethods
...
end
module InstanceMethods
...
end
end
end
end
ActiveRecord::Base.send(:include, ActiveRecord::Acts::Taggable)