Rails несколько ролей, определенных в отношениях с третьей стороной - PullRequest
0 голосов
/ 05 ноября 2011

Я создаю небольшое приложение, в котором есть классы Пользователь, Студент, Репетитор, Встреча.

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

Прямо сейчас у меня есть модель User, отдельная модель участника с атрибутом Role = "tutor" / "student". Преподаватель и учащийся расширяют участника, используя наследование одной таблицы, и принадлежат к Meeting.

Однако мне интересно, если это хороший дизайн. (Мне кажется, это не интуитивно понятно).

Что бы вы сделали в моей ситуации?

Спасибо.

1 Ответ

0 голосов
/ 05 ноября 2011

Это приемлемо, но есть и другие способы, которые чище.Вы можете создать свою Meeting модель следующим образом:

has_and_belongs_to_many :users, :as => :studens
belongs_to :tutor, :foreign_key => 'tutor_id', :class_name => 'User'

Ваша User Модель:

has_and_belongs_to_many :meetings, :as => :meetings_taken
has_many :meetings_given, :foreign_key => 'tutor_id', :class_name => 'Meeting'

Так что вам понадобятся только две модели.

// edit

Для предложения, принятия, отклонения, .. Я хотел бы создать Invitation Модель user_id:integer (Приглашенный пользователь), meeting_id (Благодаря этому вы знаете, кому разрешено приглашать других людей из-за собранияпринадлежит наставнику), status:string (могут быть варианты с ожиданием, принятием и удалением), может быть explaination:text (когда кто-то делает деликатес).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...