【问题标题】:Rails: Find all children from the same generationRails:查找同一代的所有孩子
【发布时间】:2016-05-24 23:19:01
【问题描述】:

在我的申请中,我有职位。每个位置都有一个父位置和多个子位置。如何导航树并找到同一代中的所有位置?

目前我有这个:

def org_chart_level
  ps = self
  level = 10
  while ps do
    break if ps.reports_to == nil
    ps = ps.reports_to
    level += 10
  end
  if self.reports_to
    siblings = self.reports_to.responsible_for
  else
    siblings = [self]
    puts siblings
  end
  "#{level}-#{siblings.index(self) + 1}"
end

这几乎可以工作,因为它可以给我一个位置的级别,它可以告诉我它是父母的哪个兄弟姐妹,但它不能告诉我它是一代中的哪个兄弟姐妹。

每个职位的预期级别。

1.1
  -2.1
     -3.1
  -2.2
     -3.2

实际水平:

1.1
  -2.1
     -3.1
  -2.2
     -3.1

【问题讨论】:

    标签: mysql sql ruby-on-rails tree orgchart


    【解决方案1】:

    我最终在保存之前将位置生成存储在数据库中。

    before_save :find_generation

    def find_generation
      ps = self
      i = 0
      while ps do
        break if ps.reports_to == nil
        ps = ps.reports_to
        i += 1
      end
      self.generation = i
    end
    

    然后当我需要生成组织结构图级别时:

    def org_chart_level
      ps = self
      level = 10
      while ps do
        break if ps.reports_to == nil
        ps = ps.reports_to
        level += 10
      end
      generation = organization.positions.where(generation: self.generation) #position belongs to organization.
      "#{level}-#{generation.index(self) + 1}"
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多