2012-02-23 9 views
6

के बराबर नहीं है क्या यह सत्यापित करने का कोई तरीका है कि एक टेक्स्ट_फील्ड रिकॉर्ड सहेजने से पहले किसी अन्य के बराबर नहीं है? मेरे पास दो टेक्स्ट_फील्ड हैं जिनमें पूर्णांक हैं और वे मान्य होने के लिए रिकॉर्ड के समान नहीं हो सकते हैं।रेल प्रमाणीकरण कि एक मान अन्य

उत्तर

8

आप एक कस्टम मान्यता जोड़ सकते हैं:

class Something 
    validate :fields_a_and_b_are_different 

    def fields_a_and_b_are_different 
    if self.a == self.b 
     errors.add(:a, 'must be different to b') 
     errors.add(:b, 'must be different to a') 
    end 
    end 

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

errors.add(:base, 'a must be different to b') 
:

अन्यथा आप केवल एक आधार त्रुटि जोड़ सकता है

5

अपने मॉडल में:

validate :text_fields_are_not_equal 

def text_fields_are_not_equal 
    self.errors.add(:base, 'Text_field1 and text_field2 cannot be equal.') if self.text_field1 == self.text_field2 
end 
संबंधित मुद्दे