11

में सीमित करें मेरा googlefu कमजोर होना चाहिए क्योंकि मुझे अपने रेल ऐप में स्ट्रिंग कॉलम की डिफ़ॉल्ट सीमा बताने के लिए कुछ भी नहीं मिला है (होस्ट किया गया है Hergoku, डेटाबेस के रूप में PostgreSQL का उपयोग कर)।रेल 3/पोस्टग्रेस - यदि आप आवेदन नहीं करते हैं तो स्ट्रिंग कितनी देर तक है: स्कीमा

किसी भी मदद की सराहना की जाएगी!

उत्तर

17

ActiveRecord varchar(255) (या character varying (255) पैडेंटिक होने के लिए) का उपयोग करता है यदि आप कोई विशिष्ट सीमा निर्दिष्ट नहीं करते हैं। आप PostgreSQL को psql के साथ हमेशा पोस्टग्रेएसक्यूएल में हॉप कर सकते हैं और तालिका प्राप्त करने के लिए \d your_table कह सकते हैं क्योंकि PostgreSQL इसे देखता है।

मुझे नहीं लगता कि डिफ़ॉल्ट कहीं भी निर्दिष्ट किया जाता है, लेकिन यह right here in the source है:

NATIVE_DATABASE_TYPES = { 
    :primary_key => "serial primary key", 
    :string  => { :name => "character varying", :limit => 255 }, 
    #... 

एक विनिर्देश के निकटतम बात में है Migrations Guide:

ये एक उपयुक्त पर मैप किया जाएगा अंतर्निहित डेटाबेस प्रकार, उदाहरण के लिए MySQL :string के साथ VARCHAR(255) पर मैप किया गया है।

लेकिन यह PostgreSQL के बारे में नहीं है और वास्तव में गारंटी नहीं है।


एक के रूप में एक तरफ, अगर आप PostgreSQL का उपयोग कर रहे हैं, तो आप लगभग हमेशा सीधे :text के पास जाकर नाटक कि :string मौजूद नहीं है चाहिए। PostgreSQL उन्हें आंतरिक रूप से समान व्यवहार करता है सिवाय इसके कि इसे varchar पर लम्बाई जांच करनी है। यहां मेरे उत्तरों में से एक में इस पर कुछ और चर्चा है: Changing a column type to longer strings in rails

NATIVE_DATABASE_TYPES = { 
     primary_key: "serial primary key", 
     bigserial: "bigserial", 
     string:  { name: "character varying" }, 
     text:  { name: "text" }, 
     #... 

आप अधिकतम संख्या ActiveRecord सिर्फ character varying सेट हो जाएगा निर्दिष्ट नहीं है और आप वहां एक स्ट्रिंग संग्रहीत कर सकती है:

+0

असाधारण रूप से सहायक उत्तर, धन्यवाद! – jpwynn

7

रेल 4 में स्ट्रिंग प्रकार आप source में देख सकते हैं के लिए कोई डिफ़ॉल्ट सीमा नहीं है किसी भी लम्बाई के रूप में documentation में कहा गया है की:

चरित्र लंबाई बदलती विनिर्देशक के बिना किया जाता है, प्रकार किसी भी आकार के तार को स्वीकार करता है

संबंधित मुद्दे

 संबंधित मुद्दे