我正在使用 Rails 似乎不太擅长的数据概念——一条路线有两个(而且只有两个)机场。我终于想出了如何对我的外键进行硬编码,以使它们变得合理。
我models/route.rb
的很简单:
class Route < ActiveRecord::Base
has_one :airport, :foreign_key => 'from_airport_id', :class_name => 'Airport'
has_one :airport, :foreign_key => 'to_airport_id', :class_name => 'Airport'
end
这一切似乎都很好,但我似乎无法让它正确播种。
我的seeds.rb
样子是这样的:
Airport.delete_all
@kpdx = Airport.create(:icao => 'KPDX', :name => 'Portland International Airport', :lat => '45.58869934', :lon => '-122.5979996')
@ksea = Airport.create(:icao => 'KSEA', :name => 'Seattle Tacoma International Airport', :lat => '47.4490013122559', :lon => '-122.30899810791')
Route.delete_all
Route.create(:from_airport_id => @kpdx, :to_airport_id => @ksea, :route => "RIVR6 BTG OLM6")
Route.create(:from_airport_id => @kpdx, :to_airport_id => @ksea, :route => "BTG OLM OLM6")
Route.create(:from_airport_id => Airport.find_by_icao("KSEA"), :to_airport_id => Airport.find_by_icao("KPDX"), :route => "SEATL4 SEA HELNS4")
Route.create(:from_airport_id => Airport.find_by_icao("KSEA"), :to_airport_id => Airport.find_by_icao("KPDX"), :route => "SEA HELNS4")
请注意,我有两种不同的方法来尝试告诉种子数据从我创建的一个机场到另一个机场。两者都不起作用。当我运行时rake db:seed
,所有的from_airport_id
和to_airport_id
字段都设置为 1,此时airport
表中的 ID 正在递增(在我当前的运行中为 23 和 24)。
所以我有两个问题:
- 有没有比我正在做的更好的方法来处理模型代码?
- 我在播种时做错了什么:-)
谢谢!