`

ruby递归查找某对象的父/子节点集合

    博客分类:
  • RUBY
 
阅读更多
def parent_ids
    ids = []
    parent_id = self.parent_id
    while parent_role = Role.find_by_id(parent_id)
      if parent_role
        ids << parent_role.id
        parent_id = parent_role.parent_id
      else
        break
      end
    end
    ids
  end

  def children_ids
    ids = []
    parent_id = self.id
    while child_role = Role.find_by_parent_id(parent_id)
      if child_role
        ids << child_role.id
        parent_id = child_role.id
      else
        break
      end
    end
    ids
  end
分享到:
评论

相关推荐

    SQL sever 中递归查找子节点和父节点

    为了实现递归查找父节点,我们可以创建一个函数 `f_getParent`,该函数接受一个参数 `@id`,表示要查找的节点的编号。函数将返回该节点所有的父节点。 ```sql CREATE FUNCTION f_getParent(@id int) RETURNS @re ...

    树父节点递归获取树子节点

    如果传入的父节点不为空并且具有子节点,它会遍历每个子节点,将其添加到结果列表中,并通过递归调用自身获取子节点的子节点,将这些子节点也添加到结果列表中。最后,返回包含所有子节点的列表。 在实际项目中,你...

    根据父节点找所有子节点数据.zip

    本案例提供了一个Java工具类,用于根据父节点递归地查找并返回所有子节点的数据。 首先,我们要理解什么是树查询。在树形结构中,每个节点可能有零个或多个子节点,而根节点没有父节点。树查询通常涉及遍历这些节点...

    C# TreeView递归添加子节点

    在方法中,创建一个新的`TreeNode`,设置其文本为文件夹或文件的名称,然后将其添加到父节点下。对于目录,还需要调用自身,传入子目录的`FileSystemItem`和新创建的`TreeNode`。 ```csharp private void ...

    无限级树正向查找、反向查找例子【递归实现】

    正向查找,也称为自底向上查找,是从叶子节点开始,沿着父节点路径向上查找目标节点的过程。在无限级树中,我们从某个特定节点出发,遍历其父节点,直到找到目标节点或到达根节点为止。递归实现正向查找的C#代码示例...

    删除数据库表中的父节点以及其子节点

    这个存储过程首先将指定的父节点ID存入临时表`childQueue`,然后在循环中不断删除队列中的节点并查找其子节点,将子节点加入队列,直到队列为空。这样就确保了所有子节点都被删除,最后父节点也被安全移除。 当然,...

    根据子节点查找所有父节点

    在IT领域,尤其是在软件开发中,经常会遇到需要根据某个子节点查找其所有父节点的情况。这通常发生在数据结构和树形结构的操作中,比如在文件系统、DOM(文档对象模型)解析、数据库关系模型或者图算法中。这篇博客...

    JS实现treeview中选中父节点,子节点也选中,如果子节点全部选中,自动选中父节点

    //JS实现treeview中选中父节点,子节点也选中,如果子节点全部选中,自动选中父节点 //仅支持TreeView //调用方法 TreeView.Attributes.Add("onclick", "OnTreeNodeChecked()");

    js 递归json树实现根据子id查父id的方法分析

    最近做了一个类似用js实现思维导图的功能,作为思维导图,一定会有树状结构的数据产生,在操作里面的节点时会经常需要查找节点 的父节点及父节点。 对于未知层级的树状数据,用for循环是无法实现的,因为不知道要...

    根据当前节点获取所有父节点信息

    根据当前节点获取所有父节点信息(18代)SQL根据当前节点递归遍历获取所有父节点信息,短短的SQL可以解决复杂的问题

    根据子节点的金额向上汇总所有父节点的金额

    在这个场景下,我们需要遍历树的每个节点,通过递归方式计算子节点的金额并累加到父节点上。 3. **深度优先搜索(DFS)**:一种常用的遍历或搜索树的方法,沿着树的深度尽可能深地搜索树的分支。在这个问题中,我们...

    QTreeView递归实现展开或者闭合某个节点下面的所有子节点

    QTreeView递归实现展开或者闭合某个节点下面的所有子节点 不是一键展开所有,是展开你要操作的节点下面的所有子节点!

    一般树的非递归先序遍历及根据父结点-子节点形式的输入生成其链式表示

    tree_traversing.java是主类里边包括根据父结点-子节点形式的输入生成树的链式表示及对链式表示进行非递归的先序遍历请下载其中用到的表示树的两个类源码tree_node.java和runtime_tree_node.java

    treeview递归方法 查询节点

    在添加完当前层级的节点后,`GetMenuTree`方法会再次调用自身,但此时的`Nds`参数是当前节点的子节点集合,而`parentId`则更新为当前节点的ID。这样,通过递归调用,所有子层级的节点都能被正确构建和添加。 ### 3....

    jquery实现递归tr子节点

    本篇文章将深入探讨如何使用 jQuery 实现递归地获取表格 tr 子节点的方法。 首先,我们需要了解 HTML 中的 `&lt;table&gt;`、`&lt;tr&gt;` 和 `&lt;td&gt;` 标签。`&lt;table&gt;` 是表格的容器,`&lt;tr&gt;` 代表表格行,而 `&lt;td&gt;` 用于定义...

    【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归)

    递归删除通常涉及替换节点的查找,而非递归删除则需要维护一个栈来跟踪路径,以便找到合适的替代节点并更新路径上的父节点。 在提供的代码中,可能包含了对这三种操作的实现,包括递归和非递归方法。使用VS2008...

    foreach字符串递归查找.rar

    标题中的“foreach字符串递归查找”表明这是一个关于在编程中使用`foreach`循环以及递归方法来处理字符串数组或集合的教程。`foreach`是C#等编程语言中用于遍历可迭代对象(如数组、列表)的关键字,而递归则是一种...

    sql server递归子节点、父节点sql查询表结构的实例

    本文将深入探讨如何利用递归查询来获取子节点和父节点的信息。 一、查询当前部门下的所有子部门 在SQL Server中,可以使用Common Table Expression(CTE)结合递归来实现这个功能。`deptTab`是存储部门信息的表,...

    c#递归树自动树

    - 对于每一个符合条件的行,创建一个新的`TreeNode`对象,并根据是否为根节点将其添加到`TreeView`的节点集合中或作为某一个节点的子节点。 - 每次添加完一个节点后,都会调用递归函数`AddTree`,传入当前节点的ID...

    C# 用递归的方式查找指定文件夹下的所有子目录

    通过以上讨论,我们了解到如何使用C#的递归方法查找文件夹下的所有子目录,并了解了相关的关键知识点,包括递归概念、文件操作、WinForm应用的构建以及项目配置。在实际开发中,可以根据具体需求进行调整和优化。

Global site tag (gtag.js) - Google Analytics