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

猜你喜欢

转载自schooltop.iteye.com/blog/2241630