Zuvor wurde mir eine prägnante und ausgezeichnete Methode gezeigt, um alle Vorgängerkategorien für eine bestimmte Kategorie in einer Rails-Anwendung zu erhalten:
def ancestors
result = []
c = self
while c.parent
result.unshift(c.parent)
c = c.parent
end
result
end
Jetzt versuche ich herauszufinden, wie man alle absteigenden Kategorien für eine bestimmte Kategorie (Kinder, Kinder von Kindern, etc.) zu erhalten. Das nächste, was ich in der Lage gewesen, ist die folgende, aber ich habe immer noch das Problem, wo das endgültige Ergebnis-Array durcheinander ist. Die Arrays der obersten Ebene sind nicht geschlossen. Ich habe mit diesem stundenlang ringen und bin nicht sicher, wie es zu beheben.
def descendants
result = []
c = self
for child in c.children
result.push(child)
if(child.children.any?)
result.push(child.descendants)
end
end
result
end