Приложение для управления партиями. Как для частных вечеринок? - PullRequest
0 голосов
/ 27 мая 2011

Я пишу заявку на управление вечеринками. У меня есть несколько основных таблиц:

ПОЛЬЗОВАТЕЛИ: Люди, которые зарегистрировались, чтобы использовать приложение
ГРУППЫ: Пользователь может принадлежать ко многим группам. Примеры: {СЕМЬЯ, ДРУЗЬЯ}
USERS_GROUPS: к каким группам принадлежит пользователь.
СТОРОНЫ: разные партии, которые были созданы.
USERS_PARTIES: присоединиться к таблице (какие пользователи приходят на какие вечеринки)

Теперь я хочу реализовать концепцию частной вечеринки. Только пользователи, которые находятся в списке приглашений, должны иметь возможность просматривать и регистрироваться для этой частной вечеринки. Я хотел бы иметь возможность приглашать пользователей на эту вечеринку для каждого пользователя или / и для группы.

Кажется плохим решением сделать следующее:
1) Добавить поле для СТОРОН, называемое чем-то вроде private. Это будет либо 1, либо 0.
2) Создайте новую таблицу с именем GROUP_INVITATIONS. Это будет использоваться для указания, какие группы приглашаются на мероприятие.
3) Создайте новую таблицу с именем USER_INVITATIONS. Это будет использоваться для указания, какие пользователи приглашены на событие.

Является ли вышеуказанное разумным решением? Есть ли лучшие способы подойти к этому вопросу? В качестве дополнительного примечания в CakePHP есть концепция ACL (списки контроля доступа), но это позволяет пользователю быть только частью 1 группы. Это также выглядит как отдельная проблема от ограничения доступа к определенным действиям приложения MCP. Я планирую использовать ACL для этого, но в этом случае пользователи будут принадлежать одной и только одной роли, которая будет определять, к каким функциям они имеют доступ в веб-приложении.

1 Ответ

0 голосов
/ 27 мая 2011

Ну, я думаю, что вы идете в правильном направлении.

Определенно логическое поле (флаг) private для модели Party.

Я бы не стал создаватьgroups_invitations стол.Скорее, когда группа приглашена - создайте приглашение для каждого пользователя, принадлежащего к этой группе.Я думаю, что так просто проще.

Что касается таблицы users_invitations ... возможно, попробуйте включить это в таблицу users_parties (если вы хотите строго следовать соглашениям Cake - на самом деле это должно быть parties_users).Что-то вроде:

id
party_id
user_id
coming (boolean)

Когда пользователь приглашается на частную вечеринку, вы создаете ссылку (запись) между ним и стороной, и он может изменить coming на true.Что касается публичных вечеринок - пользователь создает ссылку (запись) при объявлении прибытия (установка coming в true).Для добавления (и удаления) записей HABTM см. это замечательное поведение .

Что ж, подумайте об этом - возможно, включение приглашений в таблицу соединений не лучшая идея -слишком сложно, я думаю.С нетерпением жду некоторых комментариев по этому поводу, так как я разорван.

...