我有一個Rails 3應用程序中的Flight,Person和Glider模型。我定義了自定義關係,因爲我需要從航班表引用一個以上的外鍵。協會工作,但只有一種方式。兩個模型之間的軌道多個關聯
class Flight < ActiveRecord::Base
belongs_to :pilot, :class_name => "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 < Aircraft
has_many :flights
has_many :replaced_flights, :foreign_key => "rep_glider_id", :class_name => "Flight"
end
class Person < ActiveRecord::Base
has_many :flights, :foreign_key => "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
我幾乎沒有,但我不明白Glider.first.flights
如何做工作的時候Person.first.flights
沒有。
UPDATE:協會以「飛機場」的作品...所以我無能,爲什麼它不與「人」
class Airfield < ActiveRecord::Base
has_many :takeoff_flights, :foreign_key => "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
嗨,我用你的'Flight','Glider'和'Person'類創建了一個小型的rails項目,對我來說它只是起作用。 我認爲你的數據模型是你問題領域的完美解決方案。 你能顯示確切的錯誤嗎? nomethod錯誤來自哪裏?也許你的班級有'after_initialize'方法? – nathanvda 2011-04-10 10:47:53
奇怪的是,我只是再次嘗試(三天後,我的頭靠在牆上),它現在起作用。我在航班表中添加了新記錄,並且協會正常工作,他們甚至可以使用我以前保存的航班。我無能爲力。感謝您的支持,當我遇到類似問題時,我會嘗試創建一個新的Rails應用程序。我應該如何回答這個問題?也許用這個評論添加我自己的答案? – bruno077 2011-04-10 14:52:11
很高興聽到它現在也適用於你。不知道你應該做什麼:用該評論回答或刪除它? – nathanvda 2011-04-10 16:03:10