मुझे समस्या है, कि मेरे पास रेल में एक माइग्रेशन है जो एक कॉलम के लिए एक डिफ़ॉल्ट सेटिंग सेट करता है, जैसे कि उदाहरण:
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
मान लीजिए, मैं बाद की माइग्रेशन में उस डिफ़ॉल्ट सेटिंग्स को छोड़ना पसंद करता हूं, मैं रेल प्रवासों का उपयोग कैसे करूं?
मेरा वर्तमान समाधान इस तरह से रेल प्रवास में एक कस्टम एसक्यूएल कमांड का निष्पादन है:
def self.up
execute 'alter table column_name alter bought_at drop default'
end
लेकिन मुझे यह तरीका पसंद नहीं है, क्योंकि मैं अब इस बात पर निर्भर हूं कि अंतर्निहित डेटाबेस इस कमांड की व्याख्या कैसे कर रहा है। डेटाबेस के बदलाव के मामले में यह क्वेरी शायद अब काम नहीं करेगी और माइग्रेशन टूट जाएगा। तो, क्या रेल्स में एक कॉलम के लिए डिफ़ॉल्ट सेटिंग के पूर्ववत को व्यक्त करने का एक तरीका है?
CHARACTER VARYING
कॉलम के लिए डिफ़ॉल्ट को नहीं गिराएगा, बस इसे सेट करेंNULL::character varying
।