2011-05-05 8 views
6

यह एक साधारण प्रश्न की तरह लगता है लेकिन मुझे कस्टम सत्यापनकर्ताओं को लिखने का उत्तर नहीं मिल रहा है। मैं इस सत्यापनकर्ता हैरेल 3 कार्रवाई के आधार पर नियम मान्य करता है

validates :password, :presence => true, :confirmation => true, :length => { :minimum => 5} 

अधिक नियमों ऐसे जटिलता के लिए कुछ regex के रूप में लागू कर रहे हैं, लेकिन इस सार देता है।

मुद्दा यह है कि मैं केवल निर्माण पर लागू उपस्थिति चाहता हूं, बाकी सब कुछ बनाने और अपडेट करने की आवश्यकता है। चूंकि उपयोगकर्ता अपनी जानकारी अपडेट करते समय पासवर्ड बदल नहीं सकता है।

मैं नियमों

validates :password, :presence => true, :on => :create 
validates :password, # The rest of the rules 

यह सभी नियमों का अद्यतन के लिए अनदेखा किया जा रहा में हुई बंटवारे की कोशिश की। क्या सब कुछ बनाने के लिए केवल एक नियम लागू करने का एक आसान तरीका है?

उत्तर

6

आप एक पंक्ति में रखते हुए, लेकिन :on => :create लागू करने की कोशिश कर सकते हैं करने के लिए सिर्फ :presence जांच:

validates :password, :presence => {:on => :create}, :confirmation => true, :length => { :minimum => 5} 

हालांकि, मुझे यकीन है कि यह हमेशा एक न्यूनतम लंबाई की आवश्यकता के लिए समझ में आता है नहीं कर रहा हूँ, लेकिन हमेशा की आवश्यकता नहीं उपस्थिति - यदि आप रिक्त पासवर्ड वाले मौजूदा रिकॉर्ड को अपडेट करते हैं, तो यह लंबाई 0 के बाद से सत्यापन विफल होने जा रहा है।

+0

अच्छा बिंदु। मुझे इसे थोड़ा गहरा देखना पड़ सकता है। दर्ज किए गए पासवर्ड की कुछ आवश्यकताएं खाली होने पर विफल हो सकती हैं। –

0

मेरा हल यह है कि समस्या यह है कि वैध: पासवर्ड कॉल योजक नहीं है। क्या आप उपस्थिति चेक को स्विच कर सकते हैं:

validates_presence_of :password, :on=>:create 

और फिर मान्यताओं का उपयोग करके अपने अन्य सत्यापन रखें। क्या वह काम करता है?

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