我正在开发一个应用程序,那里将有带预订的旅游。每个旅游将在不同的日子提供,每个预订将属于一个单一的日子。我的问题是,我应该在每个模型上创建一个“日”列(旅游和预订),还是应该创建某种类型的关联和/或联接表,如下所示?
我只是不确定哪一个更合适。我的目标是为每个旅游添加一组天数,然后在预订页面上显示这些天数,并允许用户选择一天。
模型
预约
旅游
天数
days_tours (联接表)
协会
旅游has_many :days_tours
游览has_many :天,途经::days_tours
日has_many :days_tours
日has_many :旅游,途经::days_tours
预订has_one :日
发布于 2014-05-15 20:37:13
我将使用一个带有三个外键的预订表: user_id、tour_id和day_id。
那么,该表可以作为一个连接表。
然后,根据您的需要,可以设置以下内容:
# User
has_many :reservations
has_many :tours, through: :reservations
has_many :days, through: :reservations
# Tour
has_many :reservations
has_many :days, through: :reservations
has_many :users, through: :reservations
# Day
has_many :reservations
has_many :users, through: :reservations
has_many :tours, through: :reservations另外,请记住,一边的每个has_many或has_one都需要另一侧的belongs_to。
# Reservation
belongs_to :user
belongs_to :tour
belongs_to :day至于has_and_belongs_to_many --通常设置起来更简单,但它的灵活性远不如has_many : more,尤其是当您加入两个以上的模型时。
https://stackoverflow.com/questions/23686830
复制相似问题