2012-05-28 18 views
5

मेरे पास एक धारावाहिक विशेषता (सरणी) वाला एक मॉडल है। मैं मॉडल को केवल तभी सत्यापित करना चाहता हूं यदि सरणी के प्रत्येक सदस्य को प्री-निर्धारित विकल्पों में शामिल किया गया हो।एक धारावाहिक विशेषता पर एक समावेश सत्यापन कैसे करें?

उदाहरण: मेरे पास एक व्यक्ति मॉडल है जिसमें "मनोदशा" विशेषता है। उपयोगकर्ताओं में एक से अधिक मूड हो सकते हैं, लेकिन प्रत्येक मूड या तो 'खुश', 'उदास', 'थका हुआ' या 'गुस्सा' होना चाहिए।

class Person < ActiveRecord::Base 
    MOODS = %w[happy sad tired angry] 
    # validates :inclusion => { :in => MOODS } 

    attr_accessible :mood 
    serialize :mood 
end 

टिप्पणी की मान्यता काम नहीं करता:

मॉडल कुछ इस तरह होगा। क्या इसे काम करने का कोई तरीका है या क्या मुझे कस्टम सत्यापन की आवश्यकता है?

(। नोट: मैं एक अलग मूड मॉडल बनाने के लिए नहीं करना चाहते हैं)

उत्तर

8
class Person < ActiveRecord::Base 
    MOODS = %w[happy sad tired angry] 
    validate :mood_check 
    attr_accessible :mood 
    serialize :mood 

protected 
    def mood_check 
    mood.each do |m| 
     errors.add(:mood, "#{m} is no a valid mood") unless MOODS.include? m 
    end 
    end 

end 
+0

चेक इस दस्तावेज़, http://guides.rubyonrails.org/active_record_validations_callbacks.html#inclusion: आप सिर्फ उन सत्यापन एक ब्लॉक वाक्य रचना में तरीकों से आप उम्मीद कर सकते हैं करने के लिए रख सकते हैं,। इसके लिए आपको कस्टम सत्यापन नहीं करना है। – Chamnap

+0

क्रमबद्ध गुणों पर, आप करते हैं, अन्यथा क्रमबद्ध मान को शामिल करने के लिए चेक किया गया है, जिसका अर्थ है मूड = [थका हुआ, गुस्से में] MOODS.include के बाद विफल हो जाएगा? (मूड) झूठा –

+0

आह है, मुझे धारावाहिक विधि नहीं दिखाई दे रही है। आपका जवाब तब सही होना चाहिए। – Chamnap

2

मामले में यहां इस छोड़कर यह भविष्य में किसी को भी मदद करता है - मैं एक मणि बेहतर धारावाहिक मान्य को संभालने के लिए लिखा है जिम्मेदार बताते हैं।

class Person < ActiveRecord::Base 
    MOODS = %w[happy sad tired angry] 
    attr_accessible :mood 
    serialize :mood 

    validates_array_values :mood, inclusion: { in: MOODS } 
end 

https://github.com/brycesenz/validates_serialized

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