Как правильно смоделировать систему бронирования в Rails - PullRequest
0 голосов
/ 18 октября 2019

Я строю систему бронирования, где студенты могут бронировать уроки у учителей.

Особенности:

  • Преподаватели обеспечивают свою доступность на основе 30-минутных блоков.
  • Учителя предоставляют варианты для продолжительности их уроков.
    • Продолжительность урока может составлять 45 минут, 90 минут и т. Д.
  • Учащиеся записывают уроки в зависимости от наличия учителя и выбранной им продолжительности.

Как мне смоделировать доступность учителя с учетом забронированного времени?

Например, если учитель доступен с 1: 00-2: 00 истудент заказывает урок в течение 45 минут, бронирование будет с 1: 00-1: 45, а учитель теперь доступен с 1: 45-2: 00.

Мои модели пока: Бронирование моделей

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Вместо того, чтобы работать с одним гигантским временным интервалом (с 1:00 до 2:00), разделите его на временные интервалы в 15 минут (или в зависимости от того, какая наименьшая назначаемая часть - 10 минут?).

Так что теперь у нашего учителя есть 4 15-минутных неназначенных (так называемых свободных) временных интервала. Первый студент может просто посмотреть, какие временные интервалы свободны, и забронировать их. Бронирование их тогда означает: назначение слота себе.

В этом случае я даже не уверен, есть ли необходимость в Booking или LessonItem. Или вы все еще можете выбрать какой-нибудь объект Booking/Lesson, который has_many (последовательный?) TimeSlot -s, который затем открывает другие возможности:

  • несколько студентов могут заказать урок вместе?
  • они могли бы добавить еще немного информации: предмет, комментарии, рейтинг (впоследствии)?
0 голосов
/ 18 октября 2019

Мы можем смоделировать, как показано ниже, чтобы иметь возможность связать одно с другим

Teachers_Availability_Information Teacher_ID Teacher_Name

Slot_Information Teacher_ID StartTime(datetime) EndTime (datetime)

  • Чтобы мы могли отобразить разное время слота для одного и того же человека

Student_Information Student_id Student_name

Lesson_Details Продолжительность названия главы главы

Бронирование ID учителя_ID Идентификатор главы StartTime (дата-время) EndTime (дата-время)

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