Using Tagging in your Ruby on Rails Application

Contributor Icon Contributed by johnnythawte Date Icon September 11, 2006  
Tag Icon Tagged: Ruby on Rails

Tagging is all the rage in the web 2.0 universe. For you aspiring Ruby on Rails developers, you are in luck, because there is a great plugin that makes adding tagging into your application a breeze. This recipe describes using the acts_as_taggable plugin on Rails 1.1


To install the plugin into your application, you will first run these commands from your project directory in your console:

script/plugin install acts_as_taggable
script/generate migration add_tag_support

The first command installs the plugin from the RubyGems repository. The second command generates a Rails Migration file under the db/migrate directory. You will want to open up that file and add in this code:

class AddTagSupport < ActiveRecord::Migration
def self.up
#Table for your Tags
create_table :tags do |t|
t.column :name, :string
end

create_table :taggings do |t|
t.column :tag_id, :integer
#id of tagged object
t.column :taggable_id, :integer
#type of object tagged
t.column :taggable_type, :string
end
end

def self.down
drop_table :tags
drop_table :taggings
end
end

Running the next command will execute the file we just edited and create the database support for tags.
rake db:migrate

Now you need to add the following line to the top of your model class:

acts_as_taggable

And that's it. You now have tagging support on your object!

Here are some sample usage for you to try:
# tags a post with both the tags "Agile" and "Rails"
post.tag_with("agile rails")

# returns a string containing "agile rails", space delimited.
post.tag_list

# find all posts tagged with Rails
post.find_tagged_with("Rails")

Be sure to check back in this category for more Ruby on Rails recipes, or there's always the Ruby on Rails Quick Reference over at Johnny's Thoughts.

Previous recipe | Next recipe |
 
blog comments powered by Disqus