递归地找到自联接表中的所有父母和孩子

时间:2015-01-25 17:14:51

标签: ruby-on-rails ruby self-join

我有一个名为OrganisationTrees的表,它自己加入。 父母被称为parent_tree;孩子被称为sub_trees。我需要输入一个OrganisationTree,然后找到它的所有sub_trees,然后找到它的所有sub_trees等,直到所有的孩子都筋疲力尽。

我目前的代码是

class OrganisationTree < ActiveRecord::Base

  ####other code here###

  def map_sub_trees(list=[])        
    unit = []
    sub_unit = []
    parent = "parent - #{self.name}"
    unit << parent
    self.sub_trees.each do |tree|
      sub_unit<<tree.name
      if tree.sub_trees.count >= 1
        tree.map_sub_trees(list)
      end
    end
    unit << sub_unit
    list << unit
    puts list.reverse.inspect
  end

目前的输出如下:

[["parent - Tree 1", ["Tree 2", "Tree 4", "Tree 5"]], ["parent - Tree 2", ["Tree 3"]], ["parent - Tree 3", ["Tree 6"]]]
nil

我的问题是我似乎无法正确嵌套数组。例如,以parent - Tree 2开头的数组应嵌套在以parent - Tree 1开头的数组中,因为Tree 2的第一个元素是Tree 1.

的第一个子元素

如果它使生活更简单,输出可以采取任何形式,例如哈希

0 个答案:

没有答案