skater coder

angela chng – Ruby on Rails / PHP web developer & skater girl in Singapore

  • blogabout stuff
  • aboutthis website
  • contactdrop a message

July 23, 2010
Posted by roadburn

How to: Create a Rails model that has categories and subcategories

Another reason to love rails, it’s so easy!

Just install the acts_as_tree plugin

1
$ script/plugin install git://github.com/rails/acts_as_tree.git

and in your model, eg. app/models/category.rb, just add

1
acts_as_tree :order => 'name'

And here’s the plugin’s readme on how to use it

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
acts_as_tree
============
 
Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children
association. This requires that you have a foreign key column, which by default is called +parent_id+.
 
  class Category < ActiveRecord::Base
    acts_as_tree :order => "name"
  end
 
  Example:
  root
   \_ child1
        \_ subchild1
        \_ subchild2
 
  root      = Category.create("name" => "root")
  child1    = root.children.create("name" => "child1")
  subchild1 = child1.children.create("name" => "subchild1")
 
  root.parent   # => nil
  child1.parent # => root
  root.children # => [child1]
  root.children.first.children.first # => subchild1

Resources

  • Railscasts – Tree Based Navigation

Leave a comment

Posted Under Rails

No Comments Yet

You can be the first to comment!

Leave a comment

* = Required

  • CATEGORIES
    • Coding Tips
    • ExtJS 4
    • Food
    • Portfolio
    • Rails
    • Sharepoint
    • Ubuntu
    • Wordpress

  • TAGS
    activities AD ADAM ajax architecture authentication bluehost books custom application custom form date design disk partition ECTS event id eventid moss forum guid hotfix iis imap keberos list id lists masterpage moss mysite profiles Rails rails 2.0 reporting services ruby Sharepoint sharepoint 2007 site templates site usage sql server 2005 time updates vhd virtual pc visual studio webparts workflow wss

Subscribe via RSS