मैं रेल 4.1.0 का उपयोग करके एक साधारण ऐप लिख रहा हूं। मैंने सेरी और इवेंट नामक दो मॉडल बनाए, जिनमें से एक के बीच कई रिश्तों के साथ (जैसा कि एक सेरी में कई घटनाएं हैं)।गलत विदेशी कुंजी के साथ रेल लोडिंग पोर्ट
class Serie < ActiveRecord::Base
has_many :events
end
class Event < ActiveRecord::Base
belongs_to :serie
end
मैं इन मॉडलों के लिए निम्नलिखित स्थिरता फ़ाइलें बनाई:
#series.yml
---
Serie1:
name: Whatever
#events.yml
---
EventSerie11:
date: 2013-01-01
value: '124.4'
serie: Serie1
EventSerie12:
date: 2013-02-01
value: '124.2'
serie: Serie1
समस्या यह है कि जब मैं rake db:fixtures:load
का उपयोग करके इन जुड़नार लोड, मैं घटना वस्तुओं के लिए गलत foreing कुंजी मिलता है:
$ rails c
Loading development environment (Rails 4.1.0)
2.1.1 :001 > Serie.first.id
Serie Load (0.2ms) SELECT "series".* FROM "series" ORDER BY "series"."id" ASC LIMIT 1
=> 10
2.1.1 :002 > Serie.first.events.count
Serie Load (0.3ms) SELECT "series".* FROM "series" ORDER BY "series"."id" ASC LIMIT 1
(0.2ms) SELECT COUNT(*) FROM "events" WHERE "events"."serie_id" = ? [["serie_id", 10]]
=> 0
2.1.1 :003 > Event.first.serie
Evento Load (0.2ms) SELECT "events".* FROM "events" ORDER BY "events"."id" ASC LIMIT 1
Serie Load (0.3ms) SELECT "series".* FROM "series" WHERE "series"."id" = ? LIMIT 1 [["id", 627975337]]
=> nil
2.1.1 :004 > Evento.first.serie_id
Evento Load (0.4ms) SELECT "eventos".* FROM "eventos" ORDER BY "eventos"."id" ASC LIMIT 1
=> 627975337
तो आप देखते हैं कि सभी फिक्स्चर लोड हो रहे हैं, लेकिन ईवेंट रिकॉर्ड को गलत Serie_id विदेशी कुंजी असाइन की जा रही है (और जब से मैं विकास के लिए स्क्लाइट का उपयोग कर रहा हूं ent कोई बाधा जांच नहीं है)। जहां तक मैं कह सकता हूं, प्रत्येक बार जब मैं डेटाबेस को रीसेट करता हूं और फिक्स्चर लोड करता हूं, तो सेरी रिकॉर्ड एक नई आईडी प्राप्त करता है, लेकिन प्रत्येक इवेंट रिकॉर्ड का सेरी_आईडी फ़ील्ड हमेशा 627975337 पर सेट होता है।
मैंने here पढ़ा है जिसे आप पढ़ सकते हैं अपने फिक्स्चर के लिए लोड ऑर्डर निर्दिष्ट करें; हालांकि मेरी environment.rb फाइल करने के लिए लाइन
ENV["FIXTURES"] ||= "series,events"
जोड़ने काम नहीं किया, न ही
rake db:fixtures:load FIXTURES=series,events
कोई भी विचार चल रहा था?
आप, महोदय, एक सज्जन और विद्वान हैं। यहां, कुछ और प्रतिष्ठा है। – ailnlv