2017-01-05 153 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點相同的保留(容易的,但似乎是不必要的,則可能是需要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 

你認爲哪一個選項是在長期運行得更好(並且如果S第二,設計是否準確?)?

非常感謝您的任何建議!

回答

1

ReservationTable方法看起來不錯。

從邏輯上講,直接將保留與餐廳相關聯(如果它們也通過ReservationTable和Table關聯)是多餘的,但我可以看到在保留期間可能存在狀態,因爲可能沒有分配表基於此我不會改變它。