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?
Thanks!
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.
On Oct 8, 10:53 am, David H. [email protected]
I forgot this - you also have to have
belongs_to :system
Acts as Tree:
http://wiki.rubyonrails.org/rails/pages/ActsAsTree
Does everything you need.
On Oct 7, 8:53 pm, David H. [email protected]
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!
On Oct 7, 5:53 pm, David H. [email protected]