यदि आप एआरएल स्कोप में joins
का उपयोग करते हैं, तो परिणाम केवल पढ़ने के लिए हो जाता है (यानी आप किसी भी रिकॉर्ड को वापस अपडेट नहीं कर सकते)। यदि आप परिणाम को केवल पढ़ने के लिए पसंद नहीं करेंगे, तो आप केवल readonly(false)
दायरे में श्रृंखला, उदाहरण के लिएजॉइन का उपयोग करते समय एआरएल स्कॉप्स केवल पढ़ने के लिए क्यों होते हैं?
User.joins(:orders).where(:orders => { :state => 'completed' }).readonly(false)
लेकिन मेरा अनुमान है कि वहाँ एक कारण है कि शामिल होने-स्कोप डिफ़ॉल्ट रूप से केवल पढ़ने के लिए कर रहे हैं कि। परिणामों को केवल पढ़ने के लिए सेट करने का कारण क्या है?
जहां तक मैं देख सकता हूँ, 'SELECT' क्वेरी केवल उपयोगकर्ता विशेषताओं का रिटर्न * से ... '। इसलिए लौटाए गए ActiveRecord ऑब्जेक्ट में कोई ऑर्डर विशेषता नहीं होनी चाहिए, जहां तक मैं –
समझ सकता हूं, मैं इसे मूल मॉडल की सामग्री को वापस देखता हूं। यह डिफ़ॉल्ट दायरे में शामिल होने का उपयोग करना मुश्किल बनाता है। मैं एक पदानुक्रमित मॉडल पारिस्थितिक तंत्र (जैसे कि आदेश "निष्क्रिय" पर आधारित गैर-सक्रिय रिकॉर्ड को फ़िल्टर करने के लिए डिफ़ॉल्ट दायरे में शामिल होने का उपयोग करता है, तो ऑर्डर_लाइन को डिफ़ॉल्ट रूप से वापस नहीं किया जाना चाहिए। इस प्रकार ऑर्डरलाइन डिफ़ॉल्ट_स्कोप {joins (: order)} और ऑर्डर डिफ़ॉल्ट_स्कोप {जहां (सक्रिय: सत्य)}। – TJChambers