क्या किसी को यह निर्धारित करने का कोई तरीका पता है कि रेल एसोसिएशन उत्सुक हो गया है या नहीं?रेलवे एसोसिएशन उत्सुक लोड होने पर कैसे निर्धारित किया जाए?
मेरी स्थिति: मेरे पास एक परिणाम सेट है जहां कभी-कभी संघों में से एक उत्सुक लोड होता है, और कभी-कभी यह नहीं होता है। यदि यह उत्सुक नहीं है, तो मैं ActiveRecord के खोज का उपयोग करके एसोसिएशन देखना चाहता हूं। यदि यह उत्सुक भारित है, तो मैं पहचान का उपयोग करना चाहता हूं।
उदाहरण के लिए, कहें कि मेरे आइटम मॉडल में शिपिंग_इनफ़ो ऑब्जेक्ट्स की "has_many" सरणी है। तब:
तो आइटम उत्सुक भरी हुई है, सबसे कुशल लोड है:
item.shipping_infos.detect { |si| si.region == "United States" }
तो आइटम उत्सुक भरी हुई, सबसे कुशल लोड कर रहा है नहीं है:
item.shipping_infos.where(region: "United States").first
लेकिन जब तक मैं क्या यह पता उत्सुक भारित है, मुझे नहीं पता कि रिकॉर्ड को कुशलतापूर्वक प्राप्त करने के लिए कौन सा कोड कॉल करना है। अगर मैं पहली विधि का उपयोग करता हूं जब यह उत्सुक नहीं होता है, तो मुझे आवश्यकतानुसार अधिक डीबी रिकॉर्ड देखना होगा। और अगर मैं दूसरी विधि का उपयोग करता हूं, जब यह उत्सुक था, तो मेरी उत्सुक भारित वस्तुओं को अनदेखा कर दिया जाता है।
धन्यवाद ब्रायन। मैं समझता हूं कि आप कहां से आ रहे हैं। यह विशेष कोड हमारे पूरे ऐप में सबसे अधिक बार आंशिक आंशिक रूप से होता है, हालांकि, माइक्रोसॉन्ड से भी शेविंग करना एक मापनीय अंतर बनाता है। मैं #loaded दे दूंगा? एक कोशिश। – wbharding
यह केवल has_many संगठनों के लिए काम करेगा! इस कॉल के संबंधित_इस मामले में वास्तव में अन्य ऑब्जेक्ट लोड होगा (इसलिए यह हमेशा सत्य होगा) – reto