के लिए सत्यापन त्रुटियों को कैसे सेट कर सकता है मेरे पास 3 ActiveRecord फ़ील्ड के साथ एक फ़ॉर्म है। उन क्षेत्रों में से एक प्रकार की मूर्खतापूर्ण है, और राज्य-निर्भर सत्यापन आवश्यकताओं। (उदाहरण के लिए, यदि सेटअप सेटअप विज़ार्ड फॉर्म पर ऑब्जेक्ट बनाया जा रहा है, तो मैं केवल फ़ील्ड को मान्य करता हूं।)नियंत्रक मैन्युअल रूप से किसी निश्चित फ़ील्ड
ऑब्जेक्ट बनाने के लिए मेरे पोस्ट हैंडलर में, मैंने सोचा कि मैं त्रुटियों को कॉल कर सकता हूं। एक विशेष त्रुटि स्थिति
डालने के लिए जोड़ें@foo = Foo.new(params[:foo])
if goofy_conditions(params[:foo][:goofy_field])
@foo.errors.add(:goofy_field, "doesn't meet the goofy conditions")
end
respond_to do |format|
if @foo.save
...
else
... redirect back to form (with error fields hilited)
हालांकि, नियंत्रक में @ foo.errors.add() करना कुछ भी प्रतीत नहीं होता है ... यह सहेजने से रोकता नहीं है() यदि अन्य फ़ील्ड सत्यापन पास करते हैं।
मॉडल में कस्टम सत्यापन हैंडलर डालने का एक विकल्प है ... मुझे त्रुटियों का उपयोग करना पता है .add (: field, 'msg') ठीक काम करता है ... लेकिन उस स्थिति में मेरा नियंत्रक 'पास' कैसे हो सकता है सत्यापनकर्ता को यह जानकारी बताती है कि फ़ील्ड को सत्यापित करने की आवश्यकता है या नहीं।
मॉडल पर एक nonpersisted attrbute शब्दों में कहें, का कहना है कि जादूगर, सेट उचित के रूप में और फिर बस इसे nrmal सत्यापन में उपयोग करें? –