`

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
分享到:
评论

相关推荐

    Ruby-MongoidTreeMongoid文档树结构使用物化路径模式

    1. **嵌套集合**:Mongoid Tree支持嵌套集合,这意味着每个节点都可以有任意数量的子节点。 2. **祖先和后代查询**:通过物化路径,你可以方便地查询一个节点的所有祖先和后代,无需进行复杂的递归查询。 3. **深度...

    ruby_data_structures:Ruby中的数据结构和算法实践

    堆是一种特殊的树形数据结构,满足堆性质:父节点的值总是大于或等于(最大堆)或小于或等于(最小堆)其子节点。Ruby的`PriorityQueue`类提供了堆的功能,适用于优先级排序和调度。 六、链表(LinkedList) 虽然...

    Algorithms-and-Data-Structures-in-Ruby:只是为了教育

    6. **集合(Set)**:不重复元素的集合,Ruby有内建的Set类提供集合操作。 7. **树(Tree)**:分层数据结构,如二叉树、红黑树等。在Ruby中,可以通过自定义类构建。 8. **图(Graph)**:用于表示节点和边的关系...

    疯狂JAVA讲义

    1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6 1.3.2 Java程序的运行机制和JVM 6 1.4 开发Java的准备 7 1.4.1 安装JDK 8 学生提问:不是说JVM是...

    algorithm:使用 JavaScriptRubyC++ 实现常用算法

    Ruby 的块和迭代器使得处理集合数据变得更加直观,例如在实现搜索算法时。 C++,作为一门静态类型、编译型的语言,因其高效和底层控制能力而被广泛用于系统软件、游戏引擎和高性能计算。在 C++ 中实现算法,需要...

Global site tag (gtag.js) - Google Analytics