Привет, ребята. Мне нужно адаптировать существующую модель к новым отношениям.У меня есть это:
В проекте много сотрудников.
Сотрудники проекта организованы в какой-то иерархии (ничего особенного, я решил это добавить parent_id для каждого сотрудника, чтобы построить «дерево»).)
class Employee < AR:Base
belongs_to :project
belongs_to :parent, :class_name => 'Employee'
has_many :children, :class_name => 'Employee', :foreign_column => 'parent_id'
end
class Project < AR:Base
has_many :employees,
end
Это работало как шарм, теперь новое требование: сотрудники могут принадлежать ко многим проектам одновременно, и иерархия будет отличаться в зависимости от проекта.
Поэтому я думаю, что мне понадобится новая таблица для построения HABTM и новый класс для доступа к parent_id для построения дерева.Что-то вроде
class ProjectEmployee < AR:Base
belongs_to :project
belongs_to :employee
belongs_to :parent, :class_name => 'Employee' # <--- ??????
end
class Project < AR:Base
has_many :project_employee
has_many :employees, :through => :project_employee
end
class Employee < AR:Base
has_many :project_employee
has_many :projects, :through => :project_employee
end
Как я могу получить доступ к родительскому и дочерним элементам сотрудника для данного проекта?Мне нужно добавлять и удалять детей по желанию от сотрудников проекта.
Спасибо!