Как сохранить иерархию сотрудников в одной таблице - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть таблица сотрудников, где я храню данные о сотрудниках.

Также у меня есть таблица ролей, которая содержит следующие роли

  1. Генеральный директор
  2. VP
  3. Директор
  4. Менеджер
  5. Разработчик

Генеральный директор не отчитывается ни перед кем, кроме генерального директора, каждый другой сотрудник отчитывается перед кем-то еще.И кроме роли «Разработчик» любая другая роль может иметь несколько репортеров.Так как я могу добиться этого в рельсах.

РЕДАКТИРОВАТЬ Структура таблицы выглядит следующим образом

create_table "employees", force: :cascade do |t|
    t.string "name"
    t.string "email"
    t.string "phone"
    t.integer "role_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["role_id"], name: "index_employees_on_role_id"
end

create_table "roles", force: :cascade do |t|
    t.string "name"
    t.string "desc"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
end

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете сделать самоассоциацию с таблицей сотрудников, например:

has_many :employees, class_name: 'Employee'
belongs_to :manager, class_name: 'Employee', optional: true
...