4
我正在使用Rails似乎并不擅长的数据概念 - 路由有两个(也是唯一的两个)机场。我终于想出了如何对我的外键进行硬编码,使它们变得明智。Rails 3:多个has_one关联和播种
我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 &)。
所以我有两个问题:
- 有没有更好的方式来处理比我在做什么型号代码?
- 我是什么在播种:-)
感谢做错了!
好了,好消息!我做了这个改变。播种问题仍然看起来一样(请注意,我没有更改seeds.rb中的任何内容,所以如果我应该这样做,我错过了它:-) – tkrajcar 2011-03-01 01:19:48
回答更新代码来修复种子。 – 2011-03-01 02:49:59
太棒了,修正了它。谢谢! – tkrajcar 2011-03-01 04:54:34