Using Tagging in Your Ruby on Rails Application

Posted September 11, 2006 by johnnythawte in 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 tutorial 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

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")

The Conversation

Follow the reactions below and share your own thoughts.