我有一个Agent表。每个特工都有两名初级人员,他们本身就是实际的特工。同样,每个下级代理都有两个下级代理,依此类推。我如何才能找到特定座席的初中总数。
我的意思是,代理商总数中不包括初级代理商及其次级代理商等等。
代理表
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
答案 0 :(得分:0)
看起来您需要找到二叉树中的节点数。 您可以这样做:
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