Rails Ancestry让所有最后的孩子都从根上得到



我在文件夹类中有这条记录

Folder 1 = parent id: root
sub folder 1 = parent id: Folder 1
secret file1 = parent id: Folder 1/sub folder 1
my folder1 = parent id: Folder 1/ sub folder 1/ secret file1
Folder 2
sub folder 2 = parent id: Folder 2
secret file2 = parent id: Folder 2/sub folder 2
my folder2 = parent id: Folder 2/ sub folder 2/ secret file2

现在我的 HTML 中有这个

- folder.indirects.each do |sub|
div.col
div.form-group
= sub.name

我变得像这样

机密文件1

我的文件夹1

机密文件2

我的文件夹2

但我的目标是获得"我的文件夹1"和"我的文件夹2">

所以你基本上想得到所有的叶节点,对吧?

您可以通过遍历所有后代并拒绝带有子节点的节点来实现此目的。它可能不是性能最高的解决方案,但它会起作用。

- folder.descendants.reject(&:has_children?).each do |sub|
div.col
div.form-group
= sub.name

顺便说一句,对于级别 = 2 的树,使用indirects方法是错误的,因为在这种情况下,您将拒绝根的直接子级,在这种情况下也是叶子级。

- folder.indirects.each do |sub|
- if sub.children.blank?
div.col
div.form-group
= sub.name

我使用,如果这样我可以删除另一个文件夹

相关内容

  • 没有找到相关文章

最新更新