2010-06-01 2 views
0

У меня есть две простые модели с act_as_tree, скажем, департаменты и сотрудники. Моя цель состоит в том, чтобы создать TreeView сочетая обе модели в одно общее дерево, например, так:Как объединить две модели в одном RoR actions_as_tree treeview?

  • отдела 1
    • кафедры 1,1
      • служащему
      • Сотрудник B
    • Подраздел 1.2
  • Отдел 2
    • Кафедра 2,1
      • Сотрудник С
  • Отдел 3
    • кафедры 3,1
      • Сотрудник D
      • Сотрудник E
    • Кафедра 3,2

и т.д.

Я нашел это уже: Acts as Tree with Multiple Models, но я боюсь, что я мог бы использовать немного больше указателей в в правильном направлении.

Спасибо!

ответ

0

Итак, ваша схема такая?

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 как идентификатор его «родителя».

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

+0

То, что я пытаюсь сделать, это создать древовидную структуру из отделов и сотрудников. Не только от департаментов или сотрудников. Таким образом, две модели должны быть объединены в одном большом дереве. В самом деле, у меня есть настройка, которую вы предлагаете в своем ответе, но я не знаю, как ее расширить, объединив две модели. Спасибо за помощь! – Menno

+0

Значит, сотрудник может быть родителем многих отделов? –

Смежные вопросы