Я работаю над приложением с Проект, Пользователь и Группа модели. Проект имеет много групп, Пользователь принадлежит ко многим группам через модель Членство. У меня есть два варианта:Должен ли я использовать полиморфизм для моделирования этих отношений?
При создании проекта создается группа по умолчанию. Любое лицо, участвующее в этом проекте, автоматически добавляется к нему.
Сделать членство полиморфным, чтобы пользователи могли быть участником проекта и группой в проекте.
Оба подхода имеют более широкие последствия: в игру войдут другие модели, такие как: «Файл», «Почта» и «Задача».
Если я поеду на вариант 2, эти модели также должны быть полиморфными. Но это немного упростит ситуацию.
Если я перейду к варианту 2, я предопределяю полиморфизм, но все становится немного сложнее. Например, поиск проектов пользователей означает, что я должен запрашивать группы пользователей, а затем проекты, связанные с этими группами, а затем убедиться, что проекты уникальны.
Кто-нибудь сталкивался с подобной ситуацией, какие-либо советы или дополнительные плюсы и минусы для любого подхода?
Я действительно предпочел бы группировать группы в целом, но это требование для разрешений, чтобы разделить контент на основе группы.