2017-01-05 2 views
0

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

class Table < ApplicationRecord 
    belongs_to :restaurant 
    has_many :reservations 
end 
class Reservation < ApplicationRecord 
    belongs_to :table 
    belongs_to :restaurant 
end 

Однако часто в ресторане нужно сделать 1 резервирование для нескольких таблиц - для группы из 10 человек, 2 таблицы соединяются вместе и оба из них не должны быть доступны в данный момент времени. В этом случае, у меня есть 2 вариант:

  • Создания 2 идентичных оговорок для 2 таблиц (простых, но кажется ненужным, поскольку там может быть событие с 10 таблицами, необходимых)
  • Создать новую модель ReservationTable и изменений модели для:
class Table < ApplicationRecord 
    belongs_to :restaurant 
    has_many :reservation_tables 
    has_many :reservations, through: :reservation_tables 
end 

class Reservation < ApplicationRecord 
    belongs_to :restaurant 
    has_many :reservation_tables 
    has_many :tables, through: :reservation_tables 
end 

class ReservationTable < ApplicationRecord 
    belongs_to :reservation 
    belongs_to :table 
end 

Какой выбор вы думаете, что лучше в долгосрочной перспективе (а если с econd, дизайн точный?)?

Благодарим вас за любые предложения!

ответ

1

Метод ReservationTable выглядит хорошо.

Логично, что резервирование напрямую связано с Рестораном с Рестораном, если они также связаны через ReservationTable и Table, но я могу видеть, что в течение срока действия резерва могут быть состояния, если не могут быть назначены таблицы основанный на том, что я бы не изменил его.

Смежные вопросы