2012-06-11 14 views
11

मैं अपने डेटाबेस माइग्रेशन फ़ाइल में इन स्ट्रिंग/पाठ फ़ील्ड है:रेल सक्रिय ActiveRecord सत्यापन: एक स्ट्रिंग की अधिकतम लंबाई?

t.string :author 
    t.string :title 
    t.string :summary 
    t.text :content 
    t.string :link 

और ये मेरे प्रश्न हैं:

  1. हर स्ट्रिंग/पाठ विशेषता दोनों उद्देश्यों के लिए अधिकतम लंबाई सत्यापन होना चाहिए, सुरक्षा (यदि आप कुछ एमबी टेक्स्ट इनपुट प्राप्त नहीं करना चाहते हैं) और डेटाबेस (यदि स्ट्रिंग = वर्कर, mysql में 255 वर्ण सीमाएं हैं)। क्या यह सही है या डेटाबेस में पूरी तरह से प्रत्येक स्ट्रिंग/टेक्स्ट विशेषता के लिए अधिकतम लंबाई सत्यापन नहीं होने का कोई कारण है?
  2. यदि मुझे लेखक और शीर्षक की सटीक लंबाई की परवाह नहीं है, क्योंकि वे तारों के रूप में संग्रहीत होने में बहुत लंबा नहीं हैं, तो क्या मुझे उनमें से प्रत्येक के लिए अधिकतम लंबाई 255 निर्धारित करनी चाहिए?
  3. यदि यूआरएल की अधिकतम संभव लंबाई लगभग 2000 वर्ण है, तो क्या यह स्ट्रिंग के रूप में लिंक स्टोर करना सुरक्षित है, न कि ग्रंथों के रूप में? अगर मैं regexp का उपयोग कर अपने प्रारूप को पहले से ही मान्य कर रहा हूं तो क्या मुझे लिंक विशेषता की अधिकतम लंबाई मान्य करनी चाहिए?
  4. क्या किसी सामग्री (टेक्स्ट) विशेषता में असीमित लंबाई के इनपुट से डेटाबेस की सुरक्षा के लिए अधिकतम लंबाई होनी चाहिए? उदाहरण के लिए, एक टेक्स्ट फ़ील्ड की अधिकतम लंबाई 100,000 वर्णों को उचित पर सेट कर रहा है, या यह पूरी तरह व्यर्थ और अक्षम है?

मैं समझता हूं कि ये प्रश्न कुछ लोगों के लिए महत्वहीन प्रतीत हो सकते हैं, लेकिन फिर भी - यह इनपुट का सत्यापन है, जो कि किसी भी आवेदन के लिए आवश्यक है, - और मुझे लगता है कि यह यहां पर भद्दा होना उचित है।

उत्तर

5

सवाल बहुत अच्छा है, और शायद रेल/mysql internals के अधिक ज्ञान वाले लोग अधिक विस्तार करने में सक्षम होंगे।

1) मॉडल में कोई सत्यापन होने पर निर्भर करता है कि आप सीमा से अधिक होने पर विफल होने की विफलता चाहते हैं। मॉडल सबसे अच्छा विकल्प है क्योंकि अधिकतर यह मॉडल का उपयोग करके अधिकांश वस्तुओं को कवर करेगा। अन्य विकल्प अधिकतम लम्बाई विशेषता का उपयोग कर फॉर्म फ़ील्ड को सीमित कर रहा है।

पहला विकल्प वैकल्पिक फ़ील्ड के लिए काम नहीं करता।

2) मैं अंगूठे का कोई नियम के बारे में पता नहीं कर रहा हूँ। जो कुछ भी आप जानते हैं उसका प्रयोग सबसे लंबा है और इसे थोड़ा बड़ा बनाओ।

3) मेरा नियम 255 के ऊपर कुछ भी पाठ है। आप इस Here

4 पर अधिक जानकारी प्राप्त कर सकते हैं 4) यदि कॉलम एक ही सामग्री रखता है - इसमें मूल्य हो सकता है। कुछ प्रकार के मामलों में सामग्री प्रकार या उपयोगकर्ता के आधार पर अलग-अलग अधिकतम लंबाई हो सकती है।

उपर्युक्त सभी इस बात से प्रभावित हैं कि परियोजना में कितनी सख्त डेटा सत्यापन आवश्यकताएं हैं।

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