थोड़ी देर के लिए इस मुद्दे के साथ काम करने के बाद, मुझे नहीं लगता कि यह कोर रेल दर्शन का हिस्सा है कि विदेशी कुंजी को डेटाबेस द्वारा लागू नहीं किया जाना चाहिए।
आवेदन स्तर सत्यापन और चेक वहां आसान, त्वरित, मानव पठनीय (सोच त्रुटि संदेश) चेक प्रदान करने के लिए हैं जो 99.99% समय में काम करते हैं। यदि आपके एप्लिकेशन को उससे अधिक की आवश्यकता है, तो आपको डेटाबेस स्तर की बाधाओं का उपयोग करना चाहिए।
मुझे लगता है कि मूल परीक्षण ढांचे के कारण यह "दर्शन" विकसित हुआ: फिक्स्चर का उपयोग करते समय विदेशी कुंजी बस एक बड़ी परेशानी साबित हुई। ऐसा लगता है कि जब "बग" एक "फीचर" बन जाता है क्योंकि कोई भी इसे ठीक नहीं करता है। (यदि मैं इतिहास का गलत इतिहास कर रहा हूं, तो कोई मुझे सही करता है।)
कम से कम, डेटाबेस समुदाय के साथ अखंडता को लागू करने के लिए रेल समुदाय के भीतर एक बढ़ती हुई आवाजाही है। Check out this blog post from last month. वह कुछ प्लगइन से भी लिंक करती है जो त्रुटियों को संभालने के लिए समर्थन प्रदान करने में सहायता करती हैं (और एक और ब्लॉग पोस्ट जो अधिक प्लगइन से लिंक होती है)। कुछ और Google खोज करें; मैंने अन्य प्लगइन देखे हैं जो विदेशी कुंजी बनाने के लिए माइग्रेशन में भी समर्थन जोड़ते हैं।
अब, कोर रेल दर्शन का हिस्सा है: सामानों के बारे में चिंता न करें जब तक आपको वास्तव में आवश्यकता न हो। बहुत सारे वेब अनुप्रयोगों के लिए, शायद यह ठीक है अगर रिकॉर्ड्स के एक छोटे (संभवतः छोटे) प्रतिशत में अमान्य डेटा होता है।जो पृष्ठ प्रभावित हो सकते हैं, वे शायद ही कभी देखे जा सकते हैं, या त्रुटि को पहले से ही सुन्दर तरीके से संभाला जा सकता है। या हो सकता है कि यह अगले 6 महीनों तक हाथों से समस्याओं को संभालने के लिए सस्ता (जैसा कि ठंडा हार्ड कैश) है, क्योंकि आवेदन अब बढ़ता जा रहा है, विकास प्रक्रियाओं को हर आकस्मिकता के लिए नियोजित करना है। असल में, यदि आपके उपयोग के मामले इसे सभी महत्वपूर्ण नहीं लगते हैं, और यह वास्तव में केवल रेस स्थिति के कारण हो सकता है जो 1/10000000 अनुरोध हो सकता है ... अच्छा, क्या यह इसके लायक है?
तो मेरी भविष्यवाणी यह है कि उपकरण डिफ़ॉल्ट रूप से पूरी स्थिति को बेहतर तरीके से संभालने के लिए उभरेंगे, और आखिरकार ये रेल 3 में विलय हो जाएंगे। इस बीच, यदि आपके ऐप को वास्तव में इसकी आवश्यकता है, तो उन्हें जोड़ें। यह थोड़ा परीक्षण सिरदर्द का कारण बन जाएगा, लेकिन कुछ भी नहीं जो आप मोजे और स्टब्स से नहीं मिल सकते हैं। और यदि आपके ऐप को वास्तव में इसकी आवश्यकता नहीं है ... ठीक है आप पहले से ही अच्छे हैं। :)
स्रोत
2009-05-30 01:15:05
आप रेल 2.0 की कौन सी विशेषताओं का जिक्र कर रहे थे? – eggdrop
एक विशेषता जो मैं सोच रहा हूं वह प्राथमिक कुंजी स्तंभों के लिए समर्थन है जिन्हें "आईडी" नाम नहीं दिया गया है। मैं नियमित रेल डेवलपर नहीं हूं, इसलिए मैं उनकी सभी नई सुविधाओं को ट्रैक नहीं कर रहा हूं। –
ठीक है। कुल मिलाकर, रेल में इस डिज़ाइन के लिए सही करने के लिए, क्या आप एप्लिकेशन-स्तरीय विदेशी कुंजी को मजबूत करने के लिए डेटाबेस-स्तरीय विदेशी कुंजी को परिभाषित करने की अनुशंसा करेंगे? या यह एक निर्णय कॉल है जो वास्तव में आवेदन पर निर्भर करता है? मैं इस धारणा के तहत था कि उपरोक्त मेरे उदाहरण में ऐसी परिस्थितियों में डेटाबेस-स्तरीय विदेशी कुंजी को परिभाषित करने की हमेशा अनुशंसा की जाती है। – eggdrop