我在嘗試獲取遞歸方法以在rails/ruby中工作時出現問題。目的是根據parent_id查找給定類別的所有祖先類別。當前方法確實返回了正確的祖先類別,但它嵌套了數組。我認爲這是因爲我正在初始化category_ancestors數組,然後當方法通過自身遞歸時它正在重新初始化。我想弄清楚如何改變這個,以便我得到一個具有類別屬性的單層數組,而不是現在如何輸出數據。rails遞歸方法問題
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
這將返回類似於其嵌套陣列(但我需要他們都在同一水平):
---
- - - name: Category 1
id: 1
created_at: 2011-09-04 22:56:43.198413 Z
updated_at: 2011-09-07 00:14:09.934813 Z
parent:id
- name: Category 2
id: 2
created_at: 2011-09-04 22:56:43.198413 Z
updated_at: 2011-09-07 00:14:09.934813 Z
parent:id: 1
- name: Category 3
id: 3
created_at: 2011-09-04 22:56:43.198413 Z
updated_at: 2011-09-07 00:14:09.934813 Z
parent:id: 2
很大的幫助,簡單多了,非常感謝。 – Frank