डाटाबेस बाधाओं को आपकी कार में सीट-बेल्ट पहनने की आवश्यकता नहीं है। आप अपनी पसंद के चारों ओर ड्राइव कर सकते हैं और समस्या आने तक सबकुछ बढ़िया काम करेगा। सीट बेल्ट (बाधाएं) आपको (डेटा) सुरक्षित रखती हैं।
तो यह अत्यधिक अनुशंसा की जाती है कि आप डाटाबेस स्तर पर डेटा-अखंडता को लागू करने के लिए बाधाएं पैदा करें, क्योंकि यह अत्यधिक संभावना है कि 1) आप रेल के बाहर किसी बिंदु पर डेटाबेस से बातचीत करेंगे और 2) आप एक गलती करेंगे आपका कोड जो अमान्य डेटा का कारण बनता है।
डेटाबेस की बाधाएं अधिक काम हो सकती हैं, लेकिन यह बहुत काम बचाती है, खासकर जब आपका कोड डेटा के बारे में धारणाएं कर सकता है और उसे वैधता जांच करने की आवश्यकता नहीं होती है।
कारण ActiveRecord बॉक्स के बाहर विदेशी कुंजी का समर्थन नहीं करता है क्योंकि यह डेटाबेस-अज्ञेयवादी है, और विदेशी कुंजी सभी डेटाबेस सिस्टम द्वारा सार्वभौमिक रूप से समर्थित नहीं हैं।
मुझे सीट-बेल्ट समानता पसंद है! – Zabba
एक अन्य कारण: जब तक कि आपकी रेल ऐप एक प्रक्रिया नहीं है, एक थ्रेड, एक सर्वर पर चल रहा है, यह एक साथ कई अनुरोधों को संसाधित कर सकता है। 'मान्यताओं की तरह चीजें: उपयोगकर्ता नाम, विशिष्टता: सत्य 'उस मामले में विफल हो सकती है, क्योंकि प्रत्येक ऐप इंस्टेंस अनुरोधित उपयोगकर्ता नाम के लिए जांच करता है, उसे नहीं मिला, और इसे सम्मिलित करता है। केवल एक अद्वितीय सूचकांक इसे रोकता है। आम तौर पर, कोई भी चेक "जैसे यह डेटा मान्य है डेटाबेस में क्या है ** अभी अभी **?" केवल डेटाबेस द्वारा ही विश्वसनीय रूप से किया जा सकता है। –