जवाबों:
रेक डीबी: ऊपर का माइग्रेशन विकास पर्यावरण पर किसी भी लंबित माइग्रेशन को चलाता है और डीबी / स्कीमा / आरआरबी को अपडेट करता है। रेक डीबी: परीक्षण: लोड वर्तमान डीबी / स्कीमा.आरबी से परीक्षण डेटाबेस को फिर से बनाता है। बाद के प्रयासों पर, पहले डीबी: टेस्ट: तैयार करना एक अच्छा विचार है, क्योंकि यह पहले से लंबित माइग्रेशन की जाँच करता है और आपको उचित चेतावनी देता है।
- http://guides.rubyonrails.org/testing.html
मूल रूप से यह डेटाबेस की क्लोनिंग को हैंडल करता है इसलिए आपको टेस्ट डेटाबेस को अपडेट करने के लिए टेस्ट के खिलाफ माइग्रेशन को चलाने की आवश्यकता नहीं है।
विशेष रूप से, rake db:test:prepareनिम्न कार्य करेगा:
यही है, यह db/schema.rbनिर्धारित करने के लिए आपकी फ़ाइल दिखाई देगी कि क्या आपके प्रोजेक्ट में मौजूद कोई भी माइग्रेशन जो चलाया नहीं गया है। मान लें कि कोई बकाया माइग्रेशन नहीं हैं, तो यह डेटाबेस को खाली कर देगा और db/schema.rbफ़ाइल की सामग्री के आधार पर इसे फिर से लोड करेगा ।
रेक डीबी: टेस्ट: तैयारी इस तरह से पीजी मुद्दों के लिए एक अच्छा समाधान है ।
"पीजी :: अपरिवर्तनीय: त्रुटि: संबंध मौजूद नहीं है" एक सही रेल नामकरण और सम्मेलन के साथ "जहां मैं सिर्फ निष्पादित नहीं कर सका। rake db:migrate RAILS_ENV=production
जब, उदाहरण के लिए आप यहां चर्चा किए गए बग के लिए परीक्षण डेटाबेस नहीं बना सकते हैं : "PG अपरिभाषित त्रुटि संबंध उपयोगकर्ता मौजूद नहीं हैं"
सभी ने इस त्रुटि को "PG :: UndefinedTable: ERROR: रिलेशन xxxxx मौजूद नहीं है" को घेर लिया
rake db:test:prepareअब पदावनत हो गया है।