rails 祖先得到所有最后 children 的根
rails ancestry get the all last children by the root
我在文件夹 class
中有此记录
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
我变得像这样
secret file1
my folder1
secret file2
my folder2
但我的目标是获得 "my folder1" 和 "my folder2"
- folder.indirects.each do |sub|
- if sub.children.blank?
div.col
div.form-group
= sub.name
我使用 if 这样我就可以删除其他文件夹
所以你基本上想要获取所有叶节点,对吧?
您可以通过遍历所有后代并拒绝带有子节点的节点来实现。它可能不是最高效的解决方案,但它会起作用。
- folder.descendants.reject(&:has_children?).each do |sub|
div.col
div.form-group
= sub.name
顺便说一句,对于 level = 2 的树,使用 indirects
方法是错误的,因为在这种情况下你会拒绝根的直接子代,在这种情况下它们也是叶子。
我在文件夹 class
中有此记录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
我变得像这样
secret file1
my folder1
secret file2
my folder2
但我的目标是获得 "my folder1" 和 "my folder2"
- folder.indirects.each do |sub|
- if sub.children.blank?
div.col
div.form-group
= sub.name
我使用 if 这样我就可以删除其他文件夹
所以你基本上想要获取所有叶节点,对吧?
您可以通过遍历所有后代并拒绝带有子节点的节点来实现。它可能不是最高效的解决方案,但它会起作用。
- folder.descendants.reject(&:has_children?).each do |sub|
div.col
div.form-group
= sub.name
顺便说一句,对于 level = 2 的树,使用 indirects
方法是错误的,因为在这种情况下你会拒绝根的直接子代,在这种情况下它们也是叶子。