目标:为旅行设计最佳的数据库表
表01:Trip (Columns: id, transport_mode_id....etc)
表02:Trains (id, name, number....etc.)
表03:Buses(id, name, number....etc)
我想设计一个Trip table (transport_mode_id)
或train_id
的{{1}}。行程应具有bus_id
或bus_id
。
我应该创建两列train_id
,train_id
吗?在“行程”表中。请建议设计一个bus_id
表
答案 0 :(得分:2)
您要寻找的是polymorphic-associations,有时会链接到公共汽车,有时是火车,飞机和船。
多态关联是关联上的一种更高级的扭曲。使用多态关联,一个模型可以在一个关联上属于一个以上的其他模型。例如,您可能有一个旅行模型,该旅行模型属于火车模型或公共汽车模型。可以这样声明:
class Trip < ApplicationRecord
belongs_to : transportable, polymorphic: true
end
class Bus < ApplicationRecord
has_many :trips, as: :transportable
end
class Train < ApplicationRecord
has_many :trips, as: :transportable
end
在数据库上
class CreateTrips < ActiveRecord::Migration[5.0]
def change
create_table :trips do |t|
...
t.references :transportable, polymorphic: true, index: true
....
end
end
end
如果表已准备就绪
class CreateTrips < ActiveRecord::Migration[5.0]
def change
add_reference :trips, :transportable, polymorphic: true, index: true
end
emd
我希望这对您有帮助