It's been a while since I wrote any update on that topic, but I'm glad that I will be reporting good progress this time. The acts_as_taggable_tag (AATT from now on) plugin is shaping up nicely (along with my Ruby and Rails knowledge).
Currently the AATT is a real plugin that lives in /vendor/plugins in your rails app. The plugin enables you to do that to any of your models
This simple invocation adds the following to your model class
If you look at the implementation of the above methods you'll notice how inefficient they are (a select call for each tag on a certain object for example). Performance is not my primary concern at this point in time, I am just trying to get the concept right.
A class is created for the dual polymorphic join model (name Tagging). Currently the name and the table mappings are not configurable (you have to use what I give you, period). The table structure is available in a migration format and can be invoked by:
and it can be dropped from the database using:
I will be preparing a .zip file containing the plugin. To install it you only need to unzip it in the vendor/plugins directory. A great guide to using plugins can be found here
Currently the AATT is a real plugin that lives in /vendor/plugins in your rails app. The plugin enables you to do that to any of your models
class Person < ActiveRecord::Base
acts_as_taggable_tag
end
This simple invocation adds the following to your model class
#These methods are called to define the relations
has_many :tag_joins, :class_name => "Tagging", :as => :tagged_one
has_many :tagged_one_joins, :class_name => "Tagging", :as => :tag
#These instance methods are defined for your model
tags #returns a list of objects that tag yours
tagged_ones #
returns a list of objects that are tagged by you
tag(tagged_one) #tag this object by yourself
remove_tag(tag) #remove this tag from you
clear_all_tags #delete the relations between you and your tags
clear_all_tagged_ones #delete the relations between you and objects tagged by you
If you look at the implementation of the above methods you'll notice how inefficient they are (a select call for each tag on a certain object for example). Performance is not my primary concern at this point in time, I am just trying to get the concept right.
A class is created for the dual polymorphic join model (name Tagging). Currently the name and the table mappings are not configurable (you have to use what I give you, period). The table structure is available in a migration format and can be invoked by:
rake import_aatt_schema
and it can be dropped from the database using:
rake drop_aatt_schema
I will be preparing a .zip file containing the plugin. To install it you only need to unzip it in the vendor/plugins directory. A great guide to using plugins can be found here
Comments (0)
Post a Comment