रेल 2 से रेल तक माइग्रेशन के साथ 3 सत्यापन त्रुटियों को ActiveRecord :: ActiveModel :: त्रुटियों में त्रुटि से स्थानांतरित किया गया था।
सत्यापन त्रुटि 2 पटरियों में एक प्रकार और संदेश (अन्य बातों के अलावा) था और आप की तरह कुछ कर रही द्वारा प्रमाणीकरण त्रुटि के प्रकार की जांच कर सकता है:ActiveModel :: त्रुटियों के सत्यापन प्रकार को कैसे निर्धारित करें
rescue ActiveRecord::RecordInvalid => e
e.record.errors.each do |attr, error|
if error.type == :foo
do_something
end
end
end
लेकिन रेल 3 के साथ यह सब कुछ लगता है लेकिन अवैध विशेषता और संदेश खो गया है। नतीजतन प्रकार निर्धारित करने के लिए एक ही रास्ता त्रुटि संदेश तुलना करने के लिए है: (।? जैसे कि यदि आप जो एक ही संदेश का उपयोग कई सत्यापन है)
rescue ActiveRecord::RecordInvalid => e
e.record.errors.each do |attr, error|
if error == "foobar"
do_something
end
end
end
कौन सा नहीं है सब पर आदर्श।
प्रश्न:
वहाँ रेल 3.0 में एक बेहतर तरीका सत्यापन त्रुटि के प्रकार का निर्धारण करने के लिए है?
संभावित डुप्लिकेट [? परीक्षण करने के लिए कैसे जो मान्यता ActiveRecord में विफल रहा है] (http://stackoverflow.com/questions/4119379/how-to-test-which-: मैं बंदर पैच के साथ समाप्त हो गया गया है सत्यापन-विफल-इन-एक्टिव्रेकॉर्ड) – lulalala