у меня 3 модели.Users
, Groups
, Employees
у всех трех есть много ко многим.
- у пользователя много групп
- в группах много пользователей
- в группах много сотрудников
- у сотрудников много групп
Итак, я создал две новые модели:
Departments
(обрабатывает многие ко многим между Users
и Groups
) Employments
(обрабатывает многие кмногие между Groups
и Employees
)
Я считаю, что у меня есть это исправление на бумаге, но я не могу записать его правильно, так как я новичок в рельсах.Из-за этого выборка данных кажется неправильной.
Вот что у меня есть: Занятость:
class Employment < ActiveRecord::Base
belongs_to :group
belongs_to :employee
end
Отдел:
class Department < ActiveRecord::Base
belongs_to :group
belongs_to :user
end
Пользователь:
class User < ActiveRecord::Base
has_many :departments
has_many :groups, :through=>:departments
has_many :employees, :through=>:departments, :source => :group
end
Группа:
class Group < ActiveRecord::Base
has_many :departments #new
has_many :users, :through => :departments #new
has_many :employments
has_many :employees, :through => :employments
end
Сотрудник:
class Employee < ActiveRecord::Base
has_many :employments
has_many :groups, :through => :employments
end
Я думаю, что самая большая проблема, которую я имею, состоит в том, чтобы выяснить, как получить total employees
для пользователя.В SQL это будет работать с этим запросом:
select * from employees where id in (select employee_id from employments where group_id in (select group_id from departments where user_id = 4))