此时我正在使用两种型号:机场和航班。 航班属于原始机场和目的地机场。当我尝试创建Flight模型实例时,出现以下错误:
ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:没有这样的表:main.destination_airports
我已设置我的代码以匹配此处的示例:https://www.theodinproject.com/courses/ruby-on-rails/lessons/active-record-associations
我已经研究过这个问题(在这里和其他地方),但是不能发现任何与我的情况相符的东西。我无法弄清楚出了什么问题。必须简单。也许是迁移的东西?在此先感谢您的帮助。
相关代码:
机场型号:
class Airport < ApplicationRecord
has_many :departing_flights, foreign_key: "origin_airport_id",
class_name: "Flight"
has_many :arriving_flights, foreign_key: "destination_airport_id",
class_name: "Flight"
validates :abbreviation, presence: true, length: { is: 3 }
end
飞行模型:
class Flight < ApplicationRecord
belongs_to :origin_airport, class_name: "Airport"
belongs_to :destination_airport, class_name: "Airport"
has_many :bookings
has_many :passengers, through: :bookings
end
迁移:
class CreateAirports < ActiveRecord::Migration[5.1]
def change
create_table :airports do |t|
t.string :abbreviation
t.string :full_name
t.string :city
t.string :state
t.string :zip
t.timestamps
end
end
end
class CreateFlights < ActiveRecord::Migration[5.1]
def change
create_table :flights do |t|
t.references :origin_airport, foreign_key: true
t.references :destination_airport, foreign_key: true
t.datetime :depart_time
t.datetime :arrive_time
t.integer :capacity
t.string :airline
t.string :flight_number
t.timestamps
end
end
end
答案 0 :(得分:0)
检查迁移的文件名,也许它们没有以正确的顺序运行?
此外,您可能只需要在适当的环境(RAILS_ENV=development
)
答案 1 :(得分:0)
更新:我找到了(一个?)答案 - 更改了flight表的迁移,用t.integer替换了t.references,用&#34; x_id&#34;替换了列名。纠正了这个问题。那么,只有在使用列id的模型名称时才能使用引用吗?