найти все объекты в древовидной структуре под конкретным объектом - PullRequest
0 голосов
/ 08 июля 2019

У меня есть таблица агента.У каждого агента есть 2 младших, которые сами являются фактическими агентами.Точно так же у каждого младшего агента есть два младших агента и так далее.Как узнать общее количество младших сотрудников определенного агента.

Я имею в виду, что общее количество агентов не включает младших агентов и их младших агентов и т. Д.

Таблица агентов

class CreateAgents < ActiveRecord::Migration[5.2]
  def change
    create_table :agents do |t|
      t.string :name, index: true

      t.timestamps
    end
  end
end

младший стол

class CreateJuniors < ActiveRecord::Migration[5.2]
  def change
    create_table :juniors do |t|
      t.references :junior, index: true
      t.references :agent, foreign_key: true

      t.timestamps
    end
    add_foreign_key :juniors, :agents, column: :junior_id
  end
end

1 Ответ

0 голосов
/ 09 июля 2019

Похоже, вам нужно найти количество узлов в двоичном дереве.Вы можете сделать это так:

def get_number_of_juniors(agent)
  if agent.nil?
    return 0
  end
  count = 0
  if agent.juniors.present?
    agent.juniors.each do |junior|
      count += get_number_of_juniors(junior)
    end
  end
  return count+1
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...