Подсчитать количество узлов в уровне во вложенном наборе - PullRequest
2 голосов
/ 13 октября 2009

Я использую Ruby (Ruby on Rails) и у меня есть вложенный набор около 2000 узлов. Каждый узел может иметь только двух детей.

Как лучше всего определить, сколько узлов на каждом уровне? Должен ли я ползти по всему дереву в поисках родного брата, чтобы сделать это?

Спасибо!

Ответы [ 2 ]

1 голос
/ 13 октября 2009

В ActiveRecord есть атрибут counter_cache, это сделано специально для таких случаев. Проверьте Счетчик столбца кэша скринкаст Райана Бейтса.

0 голосов
/ 13 октября 2009

Я действительно нашел "быстрый" способ сделать это. Используя сегмент «Глубина поддерева» на этой странице ( текст ссылки ), я опрашиваю глубину, используя данный SQL с find_by_sql. Затем я перебираю возвращенные результаты модели и подсчитываю, сколько раз встречается каждое значение глубины. Работает отлично! Спасибо всем за внимание и за помощь!

...