आपको 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.sql
get प्राप्त करने के लिए । - हटाएं
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
एस
डेटाबेस के अंदर संभाला जाता है और वे एक दूसरे के बारे में नहीं जानते हैं। संघर्ष हो सकता है और आपको उन्हें एक-दूसरे के साथ समन्वयित रखना सुनिश्चित करना होगा।