Как совместить две модели в одном дереве представлений RoR acts_as_tree? - PullRequest
0 голосов
/ 01 июня 2010

У меня есть две простые модели, каждая из которых содержит act_as_tree, скажем, Департаменты и Сотрудники. Моя цель - создать древовидное представление, объединяющее обе модели в одно общее дерево, например:

  • Отдел 1
    • Подотдел 1.1
      • Сотрудник A
      • Сотрудник B
    • Подотдел 1.2
  • Отдел 2
    • Подраздел 2.1
      • Сотрудник C
  • Отдел 3
    • Подотдел 3.1
      • Сотрудник Д
      • сотрудник E
    • Подраздел 3.2

и т.д.

Я уже нашел это: Действует как дерево с несколькими моделями , но я боюсь, что я мог бы использовать немного больше указателей в правильном направлении.

Спасибо!

1 Ответ

0 голосов
/ 01 июня 2010

То есть ваша схема такая?

Department
  acts_as_tree  #requires departments.parent_id field
  has_many :employees

Employee
  belongs_to :department #requires employees.department_id field

Я бы просто придерживался этого, вместо того, чтобы пытаться заставить дерево "знать" о сотрудниках.Единственные вещи, которые имеют древовидную связь - это отделы.Сотрудники принадлежат к отделу, но они не являются частью древовидной структуры.

Что касается редактирования, то, когда вы изменяете отдел, вы устанавливаете parent_id в качестве идентификатора его родителя в дереве,и когда вы перемещаете сотрудника, вы устанавливаете Department_id в качестве идентификатора его «родителя».

В чем ваша проблема?Я имею в виду, что ты пытаешься сделать?

...