Finding all "documents" belonging to a "category" using "acts_as_tree"

I have a "categories" table built using acts_as_tree and a "documents" table that belongs to a specific category. Each category is a child of a "root" category and I'd like to get *all* of the documents belonging to the categories of a root category. Here's what the structure looks like:

Root 1   Category 1 # contains documents   Category 2 # contains documents Root 2   Category 3 # contains documents   Category 4 # contains documents

categories_table:   # using acts_as_tree   # has_many :documents   id,   parent_id,   name

documents_table:   # belongs_to :category   id,   category_id,   name

I know to get the documents for a specific category I can just do category.documents. But I'd like to find all of the documents if I visit 'Root 1' or 'Root 2' which means it'll find the documents belonging to the categories in Root 1 that belong to Root 1.

Can someone help?

use acts_as_nested_set see /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ acts/nested_set.rb for more info

Dorren

============ category.rb =================== class Category < ActiveRecord::Base   acts_as_nested_set

  has_many :documents,            :foreign_key => "category_id"

  validates_presence_of :name end

======= migration: create_cateogries.rb ============ class CreateCategories < ActiveRecord::Migration   def self.up     create_table :categories do |t|       t.column :name, :string       t.column :parent_id, :integer, :default => 0       t.column :lft, :integer, :default => 0       t.column :rgt, :integer, :default => 1     end     [:parent_id, :lft, :rgt].each{|x|       add_index :categories, x     }   end

  def self.down     [:parent_id, :lft, :rgt].each{|x|       remove_index :categories, x     }     drop_table :categories   end end