Я работаю с концепцией данных, с которой 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, когда ID в таблице airport
увеличиваются (23 и 24 в моем текущем цикле).
Итак, у меня два вопроса:
- Есть ли лучший способ обработки кода модели, чем то, что я делаю?
- Что я делаю неправильно при посеве: -)
Спасибо!