[英]rails ancestry get the all last children by the root
我在文件夹类中有这个记录
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
我使用 if so 我可以删除另一个文件夹
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.