6

मैं रेगेक्स के साथ एक फ़ील्ड को सत्यापित करना चाहता हूं और इसे खाली होने की अनुमति देता हूं (खाली स्ट्रिंग स्वीकार करने के लिए)। अब तक, केवल एक चीज मैं कामयाब एक regex कि कोई रिक्त स्ट्रिंग की तरह की अनुमति देता है, लिखने के लिए:गैर अनिवार्य फ़ील्ड के रेल सक्रिय ActiveRecord regex सत्यापन

validates :field, 
      format: { with: /\A([a-z]+|)\z/i } 

अब, यह एक उचित तरीके से नहीं किया जा सकता है - यह एक बदसूरत हैक की तरह लगता है। मैं जानना चाहता हूं कि कोई और (उचित) दृष्टिकोण है या नहीं?

उत्तर

10

allow_blank काम करना चाहिए।

validates :field, 
      format: { with: /\A([a-z]+|)\z/i }, :allow_blank => true 
+0

आह, सुंदर, मुझे पता था कि यह आरटी (एफ) एम मुद्दा था! =) – aL3xa

0

आप प्रत्यावर्तन की जरूरत नहीं है ... आप 'शून्य या अधिक' घटनाओं निर्दिष्ट करने के लिए '*' परिमाणक उपयोग कर सकते हैं (वहाँ भी allow_nil शून्य मान ही नहीं है (एक खाली स्ट्रिंग) को स्वीकार करने के लिए है) । इसके अलावा, मैं [ए-जेड] की बजाय '\ w' का उपयोग करूंगा ... यह अल्फान्यूमेरिक्स को पकड़ लेगा।

validates :field, 
     format: { with: /\A(\w*)\z/i } 
+0

मैंने एक उदाहरण के रूप में '[a-z]' रखा है, लेकिन मैं वहां '*' का उपयोग नहीं करना चाहता हूं। ': allow_blank' सही था, क्योंकि यह 'शून्य' और खाली तार दोनों की अनुमति देता है। – aL3xa

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