2010-01-14 12 views
6

मैं अपने नई प्रपत्र के लिए एक अतिरिक्त क्षेत्र शामिल किए हैं:मान्य गैर मॉडल क्षेत्र

<%= select_tag :quantity, options_for_select(["Select a Value"].concat((1..10).to_a)) %> 

यह निर्दिष्ट रिकॉर्ड की प्रतियों की संख्या बनाया जाना।

मैं उस क्षेत्र की उपस्थिति (या संख्यात्मकता) को कैसे सत्यापित कर सकता हूं, क्योंकि यह मॉडल का हिस्सा नहीं है?

validates_presence_of :quantityविफल रहता है !!!

उत्तर

12

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

......... 

attr_accessor :not_on_db 
......... 

validates_presence_of  :not_on_db, 
validates_length_of  :not_on_db, :within => 1..5 
......... 
1

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

इस प्रयास करें:

attr_accessor :quantity 
validates_numericality_of :quantity, :only_integer => true 

validates_numericality_of डिफ़ॉल्ट रूप से शून्य को स्वीकार नहीं करता है, तो आप विशेषता की उपस्थिति की जांच की आवश्यकता नहीं होनी चाहिए, और आप दृश्य मैं में मात्रा की सीमा बदलने के लिए चाहते हो सकता है के रूप में इसे यहां मान्य नहीं करेगा।

यह आप सीमा को मान्य करना चाहते हैं, इसे मॉडल में स्थिर के रूप में घोषित करें। सत्यापन और दृश्य दोनों में इस निरंतर संदर्भ का संदर्भ लें।

+0

मुझे इस कार्यान्वयन के साथ निम्नलिखित अपवाद मिला: अपरिभाषित विधि 'quantity_before_type_cast ' कोई विचार? – Lee

+0

आप विधि 'quantity_before_type_cast' लिख सकते हैं और self.quantity वापस कर सकते हैं। यह बहुत साफ नहीं है लेकिन एक समाधान है। –

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