Вместо того, чтобы работать с одним гигантским временным интервалом (с 1:00 до 2:00), разделите его на временные интервалы в 15 минут (или в зависимости от того, какая наименьшая назначаемая часть - 10 минут?).
Так что теперь у нашего учителя есть 4 15-минутных неназначенных (так называемых свободных) временных интервала. Первый студент может просто посмотреть, какие временные интервалы свободны, и забронировать их. Бронирование их тогда означает: назначение слота себе.
В этом случае я даже не уверен, есть ли необходимость в Booking
или LessonItem
. Или вы все еще можете выбрать какой-нибудь объект Booking/Lesson
, который has_many
(последовательный?) TimeSlot
-s, который затем открывает другие возможности:
- несколько студентов могут заказать урок вместе?
- они могли бы добавить еще немного информации: предмет, комментарии, рейтинг (впоследствии)?