आपको db/schema.rb . से स्विच करना होगा करने के लिए db/structure.sql ।
अंतर्निहित समस्या यह है कि schema.rb डेटाबेस की संरचना का एक प्रतिनिधित्व है क्योंकि ActiveRecord इसे देखता है लेकिन ActiveRecord बहुत सी चीजों को नहीं समझता है (जैसे create type , चेक बाधाओं, और अन्य चीजें जो execute some_raw_sql में दिखाई देती हैं माइग्रेशन में स्टेटमेंट) जो PostgreSQL करता है। आप create type आप केवल schema.rb के अलावा चाहते हैं इसे कभी नहीं देख पाएंगे।
यदि आप उन चीजों का उपयोग करना चाहते हैं जो ActiveRecord समझ में नहीं आती है तो आपको db/structure.sql का उपयोग करना होगा। अपने डेटाबेस की संरचना को स्टोर करने के लिए। structure.sql डेटाबेस की संरचना को स्टोर करता है क्योंकि डेटाबेस इसे समझता है, न कि ActiveRecord इसे समझता है।
स्विच करना आसान है:
- अपना
config/application.rbअपडेट करेंconfig.active_record.schema_format = :sql. को समाहित करने के लिए । - एक
rake db:structure:dumpकरें आरंभिकdb/structure.sqlget प्राप्त करने के लिए । - हटाएं
db/schema.rbआपकी निर्देशिका ट्री और संशोधन नियंत्रण से। db/structure.sqlजोड़ें संशोधन नियंत्रण के लिए।- अपनी रेक आदतों को समायोजित करें:
db:structure:dumpका उपयोग करेंdb:schema:dump. के बजायdb:structure:loadका उपयोग करेंdb:schema:load. के बजाय
उस ने कहा, मुझे यकीन नहीं है कि PostgreSQL का मूल enum . कितना अच्छा है प्रकार ActiveRecord के साथ इंटरैक्ट करेंगे क्योंकि मैंने इसे कभी नहीं किया है। AR's enum एस
स्ट्रिंग्स और पूर्णांकों के बीच क्लाइंट-साइड अनुवाद हैं लेकिन PostgreSQL का enum एस
डेटाबेस के अंदर संभाला जाता है और वे एक दूसरे के बारे में नहीं जानते हैं। संघर्ष हो सकता है और आपको उन्हें एक-दूसरे के साथ समन्वयित रखना सुनिश्चित करना होगा।