I have a 'Circuit' table, and a 'Glue' table to perform a many-to-many join on the circuit records, such at a circuit can have many subcircuits (its component parts) and many supercircuits (circuits which it itself is a part of).
has_and_belongs_to_many :subcircuits, :class_name => "Circuit", :join_table => "circuit_glue", :association_foreign_key => "PTR_component", :foreign_key => "PTR_circuit" has_and_belongs_to_many :supercircuits, :class_name => "Circuit", :join_table => "circuit_glue", :foreign_key => "PTR_component", :association_foreign_key => "PTR_circuit" With this, I can do successfully things like my_circuit.subcircuits[0].name but if I try my_circuit.subcircuits[0].subcircuits.any_method ... I get a NoMethodError: You have a nil object when you didn't expect it! The objects in the cct.subciruits array do not appear to 'full' circuit objects in as much as they do not repsonsd to 'subcircuits' To build a recursive list of subcircuits I find I have to resort to self.subcircuits.each { |sc| subcirc_array.push(Circuit.find(:all).detect { |c| c.absid.to_s == sc.PTR_component })} ... which seems pretty slow and laborious. Any advice on how to speed this up, and/or get ...subciruits[n].subcircuits to work as required? Thanks in advance. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.