EDIT: Я не буду использовать Mongoid, так что нет цепочки, ни has_many through:
Rails вложенные модели оптимизированы запрос
Я разрабатываю бэкенд для управления проектом, и у меня есть «глубоко» родственные модели
class Project
include Mongoid::Document
has_many :steps
scope :active, ...
class Step
has_many :assignments
class Assignment
belongs_to :contractor, inverse_of: :project_assignment
belongs_to :step
class Contractor
belongs_to :user, inverse_of: :contractor_profile
has_many :project_assignments, class_name: 'Assignment'
class User
has_one :contractor_profile, class_name: 'Contractor'
Теперь я закодировал боковую панель для своих пользователей. На этой боковой панели, если у пользователя есть профиль подрядчика, я хочу отобразить количество активных проектов.
Что было бы лучшим способом реализации доступа к этой информации?
Мы обсуждаем, возможно, до 30 активных проектов за один раз, от 1 до 6 заданий на один проект (но много шагов с теми же подрядчиками), а подрядчики обычно имеют несколько общих проектов (активных или нет).
Мои идеи:
- Посмотрите на
current_contractor
задания -> шаги -> Проекты -> COUNT активными - Посмотрите на активные проекты -> Назначения -> Найти подрядчиков, которые соответствуют
current_contractor
- Может быть добавить
belong_to :project
(как я могу убедиться, что это то же самое, что и уself.step.project
?) в каждом задании, чтобы иметь возможность прыгать Подрядчик -> задания -> проекты & кол-во
На самом деле, я пытаюсь моделировать 'has_many ххх хотя xxx' отношение, но с двумя моделями, участвующими в 'through' –