Railsがうまく機能していないように見えるデータの概念を使用しています。ルートには2つ(そして2つだけ)の空港があります。私はついに、外部キーが賢明になるようにハードコーディングする方法を見つけました。
私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")
シードデータに、作成した空港の1つから別の空港に移動するように指示する方法は2つあることに注意してください。どちらも機能しません。を実行すると、テーブル内のIDが増分しているときrake db:seed
にすべてのフィールドfrom_airport_id
とフィールドが1に設定されます(現在の実行では23と24)。to_airport_id
airport
だから私は2つの質問があります:
- 私がやっていることよりもモデルコードを処理するためのより良い方法はありますか?
- シードで何が間違っているのですか:-)
ありがとう!