textयदि आप बिना लंबाई सीमा के स्ट्रिंग चाहते हैं, तो आपको रेल के साथ उपयोग करना चाहिए । इस तरह से एक प्रवास:
def up
change_column :your_table, :your_column, :text
end
def down
# This might cause trouble if you have strings longer
# than 255 characters.
change_column :your_table, :your_column, :string
end
चीजों को सुलझाना चाहिए। आप चाहते हैं :null => falseया उस के अंत में कुछ अन्य विकल्प भी हो सकता है।
जब आप stringएक स्पष्ट सीमा के बिना एक कॉलम का उपयोग करते हैं , तो रेल एक अंतर्निहित जोड़ देगा :limit => 255। लेकिन अगर आप उपयोग करते हैं text, तो आपको डेटाबेस के समर्थन में जो भी मनमाना लंबाई का तार मिलेगा। PostgreSQL आपको varcharलंबाई के बिना एक कॉलम का उपयोग करने की अनुमति देता है, लेकिन अधिकांश डेटाबेस उसके लिए एक अलग प्रकार का उपयोग करते हैं और रेल varcharबिना लंबाई के बारे में नहीं जानते हैं । PostgreSQL में textएक textकॉलम प्राप्त करने के लिए आपको रेल में उपयोग करना होगा । वहाँ प्रकार का एक स्तंभ के बीच PostgreSQL में कोई अंतर नहीं है textऔर प्रकार में से एक varcharहै (लेकिन varchar(n) है अलग)। इसके अलावा, यदि आप PostgreSQL के शीर्ष पर तैनाती कर रहे हैं, तो :string(AKA varchar) का उपयोग करने का कोई कारण नहीं है , डेटाबेस व्यवहार करता है textऔरvarchar(n)एक ही आंतरिक रूप से अतिरिक्त लंबाई की बाधाओं को छोड़कर varchar(n); आप केवल का उपयोग करना चाहिए varchar(n)(उर्फ :stringस्तंभ आकार पर (जैसे एक सरकारी फार्म का है कि प्रपत्र 897 / बी पर उस क्षेत्र 432 का कहना है 23 वर्ण लंबा हो जाएगा के रूप में)) यदि आप एक बाहरी बाधा है।
एक तरफ के रूप में, यदि आप stringकहीं भी एक कॉलम का उपयोग कर रहे हैं, तो आपको हमेशा :limitअपने लिए एक अनुस्मारक के रूप में निर्दिष्ट करना चाहिए कि एक सीमा है और आपको यह सुनिश्चित करने के लिए मॉडल में एक सत्यापन होना चाहिए कि यह सीमा पार नहीं हुई है। यदि आप सीमा से अधिक हो जाते हैं, तो PostgreSQL शिकायत करेगा और एक अपवाद बढ़ाएगा, MySQL चुपचाप स्ट्रिंग या शिकायत (सर्वर कॉन्फ़िगरेशन के आधार पर) को काट देगा, SQLite इसे-के रूप में पारित कर देगा, और अन्य डेटाबेस कुछ और करेंगे (शायद शिकायत करें) ।
साथ ही, आपको एक ही डेटाबेस के शीर्ष पर विकास, परीक्षण और तैनाती भी करनी चाहिए (जो आमतौर पर हेरोकू में PostgreSQL होगा), आपको डेटाबेस सर्वर के समान संस्करणों का उपयोग भी करना चाहिए। डेटाबेस (जैसे कि BY BY का व्यवहार) के बीच अन्य अंतर हैं, जो ActiveRecord आपको इंसुलेट नहीं करेगा। आप पहले से ही ऐसा कर रहे होंगे, लेकिन मुझे लगा कि मैं इसका जिक्र करूंगा।