我们正在创建一个航班调度程序,该程序可以调度员工和飞机的航班。
以下是当前存在的模型 飞机场 飞行员 空姐 飞机
我们仅从四个机场开始。我们希望在应用启动后立即在“机场”表中填写四个机场,然后从“机场”中创建一个自联接表,其中列出了所有可能的始发地-目的地组合及其持续时间。
我们将如何做?
我在网上看到了一些有关它的资料,但是当我们创建模型时,看起来好像已经完成了,但是我们的模型已经制作好了,所以我无法弄清楚迁移以及如何自动填写该表。我们知道持续时间,只需要输入它们即可。
根据飞行时间:我们计划将它们存储为整数,即完成飞行所需的分钟数。这些机场是在中部时区随机选择的中西部城市。
林肯和爱荷华城:32分钟
林肯和埃文斯顿:57分钟
林肯和西拉斐特:62分钟
爱荷华城和埃文斯顿:24分钟
爱荷华城和西拉斐特:31分钟
埃文斯顿和西拉斐特:13分钟
这是创建了Airports表的特定迁移
NULL
full_name就是像Evanston这样的名称。 flight_code是代表它的三个字母代码,例如EVA。 该模型当前为空。在添加关联列之前,是否需要先在其中添加一些内容?还是需要生成迁移以创建联接表,然后更改机场模型?
答案 0 :(得分:0)
您可以在迁移后运行ruby代码,在这种情况下,可以运行Rails代码:
class CreateAirports < ActiveRecord::Migration[5.2]
def change
create_table :airports do |t|
t.string :full_name
t.string :flight_code
t.timestamps
end
Airport.create(params_for_airport1)
Airport.create(params_for_airport2)
Airport.create(params_for_airport3)
Airport.create(params_for_airport4)
end
end
然后,对于工期表,我想您将使用一个包含3列的表来获得“ FlightDuration”之类的东西:airport_from_id
,airport_to_id
,duration
。您可以执行与之前相同的操作,创建表,然后在create_table
之后创建带有数据的对象。
您必须将关系添加到Airport和FlightDuration,类似:
class Airport < ApplicationRecord
has_many :flight_durations_from, class_name: 'FlightDuration', inverse_of: :airport_from
has_many :flight_durations_to, class_name: 'FlightDuration', inverse_of: :airport_to
end
class FlightDuration < ApplicationRecord
belongs_to :airport_from, class_name: 'Airport', foreign_key: :airport_from_id
belongs_to :airport_to, class_name: 'Airport', foreign_key: :airport_to_id
end