Ruby on rails rails递归方法问题

Ruby on rails rails递归方法问题,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在尝试在rails/ruby中使用递归方法时遇到了一个问题。其目的是基于父类id查找给定类别的所有祖先类别。当前方法确实返回正确的祖先类别,但它正在嵌套数组。我认为这是因为我正在初始化category_祖先数组,然后随着方法本身的递归,它将被重新初始化。我试图弄清楚如何改变这一点,以便得到一个带有category属性的单级数组,而不是它现在是如何输出数据的 def self.get_ancestors(category) category_ancestors = [] # <--

我在尝试在rails/ruby中使用递归方法时遇到了一个问题。其目的是基于父类id查找给定类别的所有祖先类别。当前方法确实返回正确的祖先类别,但它正在嵌套数组。我认为这是因为我正在初始化category_祖先数组,然后随着方法本身的递归,它将被重新初始化。我试图弄清楚如何改变这一点,以便得到一个带有category属性的单级数组,而不是它现在是如何输出数据的

def self.get_ancestors(category)

category_ancestors = []   # <-- this seems to be the problem

category_ancestors << category.attributes

if category.has_parent?
  category.get_parent.each do |parent_category|
    category_ancestors << get_ancestors(parent_category)
  end
end

category_ancestors.reverse

end

这里有一个非递归版本,它做同样的事情

class Category
  def ancestors
    result = []
    c = self
    while c.parent
      result.unshift(c.parent)
      c = c.parent
    end
    result
  end
end

这里有一个非递归版本,它做同样的事情

class Category
  def ancestors
    result = []
    c = self
    while c.parent
      result.unshift(c.parent)
      c = c.parent
    end
    result
  end
end

如果需要平面数组,则应使用concat()将元素连接到单个数组中,而不是以数组数组结束

  def self.get_ancestors(category)

    category_ancestors = []   # <-- this seems to be the problem

    category_ancestors << category.attributes

    if category.has_parent?
      category.get_parent.each do |parent_category|
        category_ancestors.concat(get_ancestors(parent_category))
      end
    end

    category_ancestors.reverse

  end
def self.get_祖先(类别)

category_祖先=[]。如果需要平面数组,则应使用concat()将元素连接到单个数组中,而不是以数组数组结束

  def self.get_ancestors(category)

    category_ancestors = []   # <-- this seems to be the problem

    category_ancestors << category.attributes

    if category.has_parent?
      category.get_parent.each do |parent_category|
        category_ancestors.concat(get_ancestors(parent_category))
      end
    end

    category_ancestors.reverse

  end
def self.get_祖先(类别)

category_祖先=[]。我会使用如下内容:

category_ancestors += get_ancestors(parent_category)

我会用这样的方式:

category_ancestors += get_ancestors(parent_category)

非常感谢,我现在看到我应该使用concat将东西保存在单个数组中。非常感谢,我现在看到我应该使用concat将东西保存在单个数组中。