नहीं है, तो मेरे पास दो मॉडल के साथ एक ऐप है। Foo has_one बार, बार संबंधित है foo।रेल: "has_one" रिकॉर्ड खोजें जिसमें
अब, एक फू बनाने के लिए आपको इसके लिए एक बार बनाना होगा, लेकिन ऐसा लगता है कि क्रैक के माध्यम से कुछ फिसल गया है क्योंकि मेरे उत्पादन ऐप में अब मुझे एक फू लगता है जिसे किसी भी तरह बिना बनाया गया है बार, और यह 500 त्रुटि का कारण बनता है।
मैं खोज कर सकते हैं:: Bar.where(:foo=>nil)
ठीक
अब, यहाँ समस्या है। लेकिन अनाथ बार एक समस्या नहीं है, और यह मुझे नहीं बताता कि मुझे क्या चाहिए।
मुझे एक फू ढूंढना होगा जहां बार शून्य है। लेकिन डेटाबेस बार्स टेबल में रिश्तों को संग्रहीत करता है, यानी, बार्सटेबल में foo_id है, फूज़टेबल में कुछ भी नहीं है, यह बताने के लिए कि इसमें एक बार गुम है।
जब मैं Foo.find(#).bar
का उपयोग करता हूं तो मुझे एक फर्जी रिकॉर्ड के लिए शून्य मिल जाएगा, लेकिन मेरे पास बहुत सारे रिकॉर्ड हैं।
तो, क्या कोई मुझे बता सकता है कि एक प्रश्न कैसे बनाया जाए जो उस फू को वापस कर दे जो उसके बार गुम हो?
धन्यवाद !!
यह काम किया! - रेल में यह सिर्फ 'Foo.where ("आईडी नहीं है (बार से foo_id चुनें)") धन्यवाद! – Andrew
आईएमएचओ, ऐसा करने के लिए सही एआर तरीका है: 'Foo.joins (: bar)', जिसके परिणामस्वरूप 'SELECT \ 'foos \'। * Foos \ 'INNER JOIN \' बार \ 'चालू \' बार \ '। \' Foo_id \ '= \' foos \ '। \' Id \ ''। आप इसे और अनुकूलित कर सकते हैं: 'Foo.includes (: bar) .joins (: bar)' आपको डीबी को कुछ बाद के अनुरोध सहेज सकता है। –