2012-12-01 14 views
6

मैं बहु-स्कोप विशिष्टता सत्यापन के व्यवहार को स्पष्ट करना चाहता था। documentation कहता है:एकाधिक स्कोप विशिष्टता सत्यापन

या यहां तक ​​कि एकाधिक स्कोप पैरामीटर। उदाहरण के लिए, यह सुनिश्चित करना कि शिक्षक किसी विशेष कक्षा के लिए प्रति सत्र एक बार शेड्यूल पर ही हो सकता है।

class TeacherSchedule < ActiveRecord::Base 
    validates_uniqueness_of :teacher_id, :scope => [:semester_id, :class_id] 
end 

इस बात का मेरे समझ मैं एक ही सेमेस्टर में दो वर्गों शिक्षण एक शिक्षक नहीं बल्कि एक ही कक्षा हो सकता है, और मैं अलग सेमेस्टर में एक ही कक्षा को पढ़ा रहे एक शिक्षक हो सकता है। क्या ये सही है? सत्यापन विफल होने के लिए सभी 3 फ़ील्ड को कुछ मौजूदा रिकॉर्ड से मेल खाना चाहिए?

क्या इसे सत्यापित करने का कोई तरीका है ताकि यह सेमेस्टर_आईडी या क्लास_आईडी मैचों में विफल हो जाए?

+1

दो मान्यताओं को क्यों नहीं जोड़ते, प्रत्येक एक अलग दायरे के साथ? –

उत्तर

9

मेरी समझ यह है कि मैं एक ही सेमेस्टर में दो कक्षाओं को पढ़ाने वाला शिक्षक हो सकता हूं लेकिन एक ही कक्षा में नहीं, और मैं एक शिक्षक को अलग-अलग सेमेस्टर में एक ही कक्षा पढ़ाने वाला शिक्षक हो सकता था। क्या ये सही है? सत्यापन विफल होने के लिए सभी 3 फ़ील्ड को कुछ मौजूदा रिकॉर्ड से मेल खाना चाहिए?

हाँ, यह सही है। इसके बारे में "scope के प्रत्येक अद्वितीय मूल्य के लिए, फ़ील्ड केवल एक बार दिखाया जा सकता है।" जब scope एक सरणी है, तो "स्कोप के लिए अद्वितीय मान" फ़ील्ड के मानों का संयोजन है।

क्या इसे सत्यापित करने का कोई तरीका है ताकि यह सेमेस्टर_आईडी या क्लास_आईडी मैचों में विफल हो जाए?

तो एक शिक्षक को सेमेस्टर में दो बार कभी नहीं पढ़ाना चाहिए, और कभी भी एक ही सेमेस्टर में भी कभी भी एक ही कक्षा को पढ़ाना नहीं चाहिए? यह सही नहीं लगता है, लेकिन आप ऐसा कर सकता है प्रत्येक पर एक सत्यापन के साथ:

class TeacherSchedule < ActiveRecord::Base 
    validates_uniqueness_of :teacher_id, :scope => :semester_id 
    validates_uniqueness_of :teacher_id, :scope => :class_id 
end 
+0

नहीं, यह दस्तावेज़ीकरण के उदाहरण के संदर्भ में समझ में नहीं आता है। बस सोच रहा है कि यह कैसे करें। – mushroom

0

मैं सिर्फ समझने के लिए विशिष्टता सत्यापन गुंजाइश के साथ काम करता है और मैं आप सभी के साथ साझा करना चाहते हैं आया था।

मान लें कि आपके पास एक संगठन में कई विभाग हैं और कोई भी कर्मचारी दो या दो से अधिक विभागों के साथ-साथ एक ही समय में हो सकता है। यह सुनिश्चित करने के लिए कि प्रत्येक विभाग में एक कर्मचारी का ईमेल आईडी अद्वितीय है, हम दायरे का उपयोग करते हैं।

ऐसा करने से, हम यह सुनिश्चित कर सकते हैं कि एक ही ईमेल पते वाला कोई भी दो कर्मचारी उसी विभाग में काम न करे। इसके अलावा हम उन सभी विभागों को ढूंढ सकते हैं जिनमें एक विशेष कर्मचारी काम करता है।

सरल शब्दों में, स्कोप के साथ विशिष्टता सत्यापन दोनों विशेषताओं (ईमेल, हमारे मामले में विभाग) पर काम करता है।

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