Self-referencing model

I'm fairly new to Ruby on Rails, and am having trouble figuring out how to do this. I have a model called Organization. I want to set things up so that an org can have sub-orgs (which can have sub-orgs themselves).

Can anyone point me to a good example or explanation (or provide one directly) so I can get an idea of how to do this?


I've just been doing this myself with systems and sub-systems.

In the system model I have:

  has_many :sub_systems, :class_name => "System", :foreign_key => "system_id", :dependent=>:nullify

Then you can refer to the system.sub_systems

I also have code to prevent loops which will go around forever if you traverse the system-sub-system tree.

def validate     errors.add(:sub_systems, "Cannot be a subsystem of itself.") if all_subs.include?(self)   end

def all_subs(subs = )     self.sub_systems.each do |s|       unless subs.include?(s)         subs << s         s.all_subs(subs)       end     end     subs   end

Hope that helps.

Look into the :as and :source options for the has_many and belongs_to associations, they should be able to do what you need.

Good luck!

I forgot this - you also have to have

belongs_to :system

Acts as Tree:

Does everything you need.