मैं पहले किसी फ़ील्ड की उपस्थिति को सत्यापित करना चाहता हूं और फ़ील्ड के लिए कोई मान नहीं है तो एक त्रुटि संदेश लौटा देना चाहता हूं। फिर यह मानते हुए कि यह उपस्थिति सत्यापन पास हो गया है, मैं एक समावेश सत्यापन को चलाने के लिए चाहता हूं।रेलिंग समावेशन सत्यापन केवल तभी चल रहा है जब उपस्थिति
अभी मेरे पास है:
validates :segment_type, presence: true, inclusion: { in: SEGMENT_TYPES }
मैं दो अलग सत्यापन में विभाजित इस की कोशिश की है इस प्रकार है:
validates :segment_type, presence: true
validates :segment_type, inclusion: { in: SEGMENT_TYPES }
लेकिन समस्या यह है, जब कोई मूल्य से ऊपर के प्रयास दोनों के लिए है segment_type
फ़ील्ड में शामिल है, मुझे दोनों प्रतिक्रियाओं के लिए त्रुटि संदेश मिलते हैं:
Segment type can't be blank
Segment type is not included in the list
इस मामले में, मैं बस "सेगमेंट प्रकार खाली नहीं हो सकता" और दूसरा संदेश नहीं चाहता।
वहाँ किसी भी तरह से है कि मैं इस सशर्त मान्यता करते हैं और मुझे एक कस्टम समारोह को परिभाषित करने के बिना त्रुटि संदेशों में से वांछित झरना देने के लिए रेल बता सकते हैं, segment_type_presence_and_inclusion_check
कि अनुक्रम में इन शर्तों की जाँच करता है कहते हैं और validate :segment_type_presence_and_inclusion_check
के साथ बुला है?
करता है 'शामिल किए जाने के साथ यह केवल काम पर
allow_blank
उपयोग करने के लिए सक्षम होना चाहिए:'? मैं कस्टम वैल्यूएटर के साथ 'समावेशन' को प्रतिस्थापित नहीं कर सकता हूं और इसलिए नीचे @ माइकल-डिसेन्ज़ा की विधि का उपयोग कर रहा हूं, लेकिन लगता है कि मॉडल पर 'मान्य:' को कॉल करके यह संभव होना चाहिए (केवल दो बार)। –नहीं, यह अन्य सत्यापन सहायकों के साथ काम करना चाहिए। आप जिस कोड को ठीक करने का प्रयास कर रहे हैं वह क्या है? – jvnill
'मान्य करता है: शीर्षक, उपस्थिति: सत्य, लंबाई: {अधिकतम: 255}' 'मान्य करता है: शीर्षक, gener_url: सत्य, अगर: proc {| p | p.title.present? && p.title.length <= 255} ' मेरे पास' ऐप/वैधकर्ता' में 'जेनरेट यूआरएल वैधता' है। –