40

में रेल 2.x आप सत्यापन का उपयोग कर सकते यकीन है कि आप इस तरह से एक अनूठा संयुक्त मूल्य बनाने के लिए:रेल 3: सत्यापित संयुक्त मूल्यों

validates_uniqueness_of :husband, :scope => :wife 

इसी प्रवास में यह ऐसा दिखाई दे सकता:

add_index :family, [:husband, :wife], :unique => true 

यह सुनिश्चित करेगा कि पति/पत्नी संयोजन डेटाबेस में अद्वितीय है। अब, रेल 3 में सत्यापन वाक्यविन्यास बदल गया है और दायरा विशेषता समाप्त हो रही है। अब यह दिखता है:

validates :husband, :presence => true 

कोई विचार है कि मैं रेल 3 में संयुक्त सत्यापन कैसे प्राप्त कर सकता हूं? रेल 2.x सत्यापन अभी भी रेल 3 में काम करते हैं, इसलिए मैं अभी भी पहले उदाहरण का उपयोग कर सकता हूं लेकिन यह इतना "पुराना" दिखता है, क्या बेहतर तरीके हैं?

उत्तर

57

मेरे साथ भालू। ActiveModel कार्यों में मान्य विधि जिस तरह से वैलिडेटर की तलाश है।

:presence => truePresenceValidator के लिए देखता है और विकल्प पास करता है: true सत्यापनकर्ता के प्रारंभकर्ता को।

मुझे लगता है कि आप

validates :husband, :presence => true, :uniqueness => {:scope => :wife} 

चाहते हैं (विशिष्टता सत्यापनकर्ता वास्तव में ActiveRecord का हिस्सा है, नहीं ActiveModel। कैसे डेवलपर्स सेट अप यह वास्तव में दिलचस्प है। यह काफी सुंदर है।)

+1

मैं सिर्फ इस बात की पुष्टि मेरे अपने आवेदन में काम करता है। – epochwolf

+0

यह शानदार और साफ लगता है और सभी ... यह मेरे नमूने 'एक मॉडल प्रोजेक्ट' में काम नहीं करता है। क्या तुमने कुछ खास किया? मैंने 2 स्ट्रिंग्स का इस्तेमाल किया और 2 पूर्णांक के साथ भी कोशिश की लेकिन सत्यापन अभी पास हो गया। – Cimm

+0

मैं 'मान्यताओं का उपयोग कर रहा हूं: सामग्री,: उपस्थिति => सत्य,: विशिष्टता => {: scope =>: comment_thread_id,: message =>" पहले से ही कहा गया है, कृपया कुछ सार्थक जोड़ें "}' – epochwolf

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