public
Fork of rails/acts_as_tree
Description: ActsAsTree plugin
Homepage: http://rubyonrails.org
Clone URL: git://github.com/monde/acts_as_tree.git
name age message
file README Mon Mar 30 01:27:48 -0700 2009 update docs with :name option examples [monde]
file Rakefile Mon Sep 10 22:46:43 -0700 2007 Fix generic file name in main load path. [jeremy]
file init.rb Sun Mar 29 23:00:59 -0700 2009 allow multiple acts_as_tree in a single model b... [monde]
directory lib/ Tue Mar 31 11:28:08 -0700 2009 only load the basis instance methods if the plu... [monde]
directory test/ Sun Mar 29 23:00:59 -0700 2009 allow multiple acts_as_tree in a single model b... [monde]
README
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

More than one tree can be specified in a model with the :name option passed
to acts_as_tress.  Named name is prepended to to all basic variable names.

  class Biology < ActiveRecord::Base
    # life, domain, kingdom, phylum, order, family, genus, species
    acts_as_tree :name => "taxonomic" # default fk taxonomic_parent_id
    #kingdom: Animalia, Platyzoa
    acts_as_tree :name => "animalia"
  end

  bio = Biology.create

  life = bio.taxonomic_children.create("name" => 'life')
  domain = life.taxonomic_children.create("name" => 'domain')
  life == bio.taxonomic_root # true
  
  animalia = bio.animalia_children.create("name" => 'Animalia')
  platyzoa = animalia.animalia_children.create("name" => 'Platyzoa')
  animalia.animalia_self_and_siblings = [animalia, platyzoa] # true

Copyright (c) 2007 David Heinemeier Hansson, released under the MIT license