2012-02-10 12 views
6

मैं इस समय RoR सीख रहा हूं, और मुझे लगता है कि मुझे कुछ गलत समझना होगा।मैं कंसोल में ActiveRecord सत्यापन क्यों नहीं देख सकता?

मेरे पास एक सक्रिय रिकॉर्ड्स क्लास कॉल उपयोगकर्ता है, जिसमें सरल सत्यापन हैं: नाम और: ईमेल जैसे उपस्थिति: सत्य, लंबाई: {अधिकतम: 15}, आदि। मैंने सोचा कि मैं कंसोल में मान्यताओं की जांच करूंगा। मैं रेल कंसोल (विकास एनवी) में जाता हूं, और एक नाम के साथ एक नया उदाहरण बनाता हूं जो user_instance = User.new (नाम: "aaaaabbbbbcccccddddd", ईमेल: "") है।

सत्यापन किसी भी त्रुटि को फेंक नहीं देता है। जब मैं user_instance.save आज़माता हूं, तो रिकॉर्ड डीबी को नहीं लिखता है, इसलिए यह स्पष्ट रूप से उस चरण में ठीक काम कर रहा है। मैं क्या गलत कर रहा हूं?

उत्तर

13

आप एक अपवाद रिकॉर्ड की बचत पर उठाया प्राप्त करना चाहते हैं, save! बजाय save का उपयोग (समान update/update!, create/create! के साथ)।

save के साथ यदि सत्यापन मान्यता है तो आपके पास अपवाद नहीं होगा, यह केवल false वापस आ जाएगा। आप यह भी जांच सकते हैं कि user_instance.valid? के साथ किसी उदाहरण पर त्रुटियां हैं या user_instance.errors के साथ त्रुटियां प्राप्त करें।

When Does Validation Happen? देखें।

+0

धन्यवाद Florent2, बहुत उपयोगी – micklec

+0

सुपर उपयोगी - एक वर्ष से अधिक के लिए रेल में संक्रमण कर दिया गया और किसी तरह यह मेरे नहीं मिल पाया था – Polsonby

+0

शायद यह 'Rails' के एक नए संस्करण में उपलब्ध है, मैं' user_instances.errors.full_messages' का उपयोग करें। आपको मानव पठनीय प्रारूप में त्रुटियों को दिखाया गया है। – Tass

5

यदि आप अपने मॉडल पर अमान्य डेटा सेट करने का प्रयास करते हैं तो सत्यापन त्रुटियों को नहीं फेंक देगा, हालांकि बचत विफल हो जाएगी।

यदि आप जांचना चाहते हैं कि सत्यापन सही तरीके से काम कर रहा है, तो बस उपयोगकर्ता.valid जांचें? और इसे पर कॉल करने के बाद झूठी

वापस लौटना चाहिए?, आप अपने मॉडल पर सेट विशिष्ट त्रुटियों के लिए उपयोगकर्ता.errors देख सकते हैं।

+0

धन्यवाद, बासम, जो अब मुझे समझ में आता है, और मैं user_instance.valid देख सकता हूं? प्रमाणीकरण परिणामों के साथ हैश @ मैसेज लौट रहा है। – micklec

+0

@ मिक्लेक महान !! खुश मैं मदद कर सकता हूँ !! –

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

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