【发布时间】:2021-07-22 17:56:39
【问题描述】:
我正在尝试使用以下代码通过 rails ActiveRecord 中 sqlit3 db 上的 seed.rb 文件填充飞行表:
departure = Date.new(2021, 9, 1)
arrival = Date.new(2021, 10, 1)
(departure).upto(arrival).each do |flight_schedule|
airports.each do |origin|
airports.each do |destination|
if origin == destination
next
else
3.times { Flight.create(origin: origin,
destination: destination,
flight_schedule: flights_time,
duration: flights_duration(origin.code, destination.code))}
end
end
end
end
我在机场和飞行模型之间建立了多对多关系,引用(foreign_key)如下;
class Airport < ApplicationRecord
has_many :departures,
class_name: :Flight,
foreign_key: :origin_id,
dependent: :destroy
has_many :arrivals,
class_name: :Flight,
foreign_key: :destination_id,
dependent: :destroy
end
class Flight < ApplicationRecord
belongs_to :origin, class_name: :Airport
belongs_to :destination, class_name: :Airport
end
这是数据库架构;
ActiveRecord::Schema.define(version: 2021_07_21_232515) do
create_table "airports", force: :cascade do |t|
t.string "code"
t.string "location"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
create_table "flights", force: :cascade do |t|
t.integer "origin_id", null: false
t.integer "destination_id", null: false
t.integer "duration"
t.datetime "flight_schedule"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["destination_id"], name: "index_flights_on_destination_id"
t.index ["origin_id"], name: "index_flights_on_origin_id"
end
add_foreign_key "flights", "destinations"
add_foreign_key "flights", "origins"
end
当我运行 rails db:seed 我有这些错误:
Rails aborted!
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: main.destinations
Rails 版本 6.1.4 Ruby 版本 3.0.1p64(2021-04-05 修订版 0fb782ee38)[x86_64-linux]
【问题讨论】:
标签: ruby-on-rails ruby activerecord