Rails两个模型之间的多个关联

我在Rails 3应用程序中有Flight,Person和Glider模型。 我已经定义了自定义关系,因为我需要多个外键引用来自flight表的Person。 协会只能单向工作。

class Flight  "Person" belongs_to :instructor, :class_name => "Person" belongs_to :towplane_pilot, :class_name => "Person" belongs_to :airplane_instructor, :class_name => "Person" belongs_to :glider belongs_to :rep_glider, :class_name => "Glider" belongs_to :departure_airfield, :class_name => "Airfield" belongs_to :arrival_airfield, :class_name => "Airfield" end class Glider  "rep_glider_id", :class_name => "Flight" end class Person  "pilot_id", :class_name => "Flight" has_many :instructed_flights, :foreign_key => "instructor_id", :class_name => "Flight" has_many :towed_flights, :foreign_key => "towplane_pilot_id", :class_name => "Flight" has_many :instructed_towing_flights, :foreign_key => "airplane_instructor_id", :class_name => "Flight" end 


 ####What works##### Flight.first.glider Flight.first.rep_glider Flight.first.pilot Flight.first.instructor Flight.first.towplane_pilot Flight.first.airplane_instructor Glider.first.flights Glider.first.replaced_flights ####What doesn't work#### ----> NoMEthodError 'match' Person.first.flights Person.first.instructed_flights Person.first.towed_flights. Person.first.instructed_towing_flights 

我几乎就在那里,但我不明白当Person.first.flights没有时, Person.first.flights是如何工作的。

更新:与’机场’的关联工作……所以我对于为什么它不能与’人’一起工作一无所知

 class Airfield  "departure_airfield_id", :class_name => "Flight" has_many :grounded_flights, :foreign_key => "arrival_airfield_id", :class_name => "Flight" end ###Works Correctly Airfield.first.takeoff_flights Airfield.first.grounded_flights Flight.first.departure_airfield Flight.first.arrival_airfield 

你的飞行员有类型吗? 像pilot_type列一样? 我也开始阅读这些模式,幸运的是它仍然有点新鲜(希望如果我是wron rails ninjas,请纠正我!:))

您需要这里讨论的多态模式:

http://asciicasts.com/episodes/154-polymorphic-association

我被告知这些模型之间的关联设置正确。

我在航class表中添加了一条新记录,现在这些协会可以正常使用这条新记录以及之前的所有记录。 我现在不确定它是如何工作的,但确实如此。