2017-01-05 27 views
0

私は予約アプリケーションを構築しており、モデルの設計方法に関するアドバイスが必要です。 私は現在、このように設計された予約モデルがあります:多対多関係のデザインテーブル

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

は、しかし、多くの場合、レストランでは、いくつかのテーブルの1つの予約をする必要がある - 2つのテーブルを一緒にし、両方の接合された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 

econd、正確なデザインですか?)

ありがとうございました!

答えて

1

ReservationTableメソッドが良さそうです。

論理的には、ReservationTableとTableを介して関連付けられている場合は、Reservationとレストランを直接関連付けるのは冗長ですが、予約されていない可能性がある場合それに基づいて私はそれを変更しません。