2012-06-27 10 views
6

मैं आरएसपीईसी का उपयोग करके जोर देने की कोशिश कर रहा हूं, कि दिए गए मोंगोइड क्वेरी रिकॉर्ड लोड नहीं करें, बस इसके अस्तित्व की जांच करें, क्योंकि रिकॉर्ड बड़ा है (कई एमबी), और कोड को केवल यह पता होना चाहिए कि क्या या रिकॉर्ड मौजूद नहीं है।मैंगॉयड उत्पन्न करने वाले प्रकार के प्रकार का परीक्षण कैसे कर सकता हूं?

मैं .exists? संघों पर के साथ खेल रहा है, लेकिन कुछ कारण यह है कि has_one जैसे के साथ काम करने के लिए प्रतीत नहीं होता:

class Profile 
    include Mongoid::Document 

    has_one :chart 
end 

class Chart # this is heavy 
    include Mongoid::Document 

    belongs_to :profile 
end 

profile.chart.exists? # fails if chart returns nil 

exists? प्रॉक्सी विधि जाहिरा तौर पर has_one संबंधों के लिए काम नहीं करता है; हालांकि यह has_many के लिए प्रलेखित है। मैं अपना खुद का शिल्प बनाना चाहता हूं, लेकिन मुझे आरएसपीईसी में परीक्षण करने की ज़रूरत है कि वास्तव में रिकॉर्ड केवल लोड नहीं किया गया है। मैं मोंगो ड्राइवर को उत्पन्न अंतर्निहित क्वेरी के परीक्षण की तरह कुछ करने के बारे में सोच रहा हूं, जैसे आप .to_sql के साथ कर सकते हैं। क्या कोई संबंधित मोंगोइड विधि है?

+0

आप शायद मोंगोइड के हिस्से को रोकना चाहते हैं जो किसी दस्तावेज़ में बीएसओएन प्रतिक्रिया के परिवर्तन को संभालता है, फिर सुनिश्चित करें कि इसे नहीं कहा जाता है। –

+0

मेरे लिए एक कोड स्निपेट मिला? मैं अरेल में .to_sql के समान कुछ के लिए उम्मीद कर रहा था। मुझे यकीन है कि यह मोपेड में कहीं गहराई से है। –

+0

मैं मोंगोइड/मोपेड को अच्छी तरह से नहीं जानता, दुर्भाग्य से (मैं मोंगोमैपर को बनाए रखता हूं)। यदि आप एक to_sql समकक्ष चाहते हैं, तो आप दस्तावेज़ में परिवर्तित होने से पहले अपने 'Mongoid :: मानदंड' को देखना चाहते हैं। मानदंड वास्तव में एक प्रश्न के रूप में चलाने से पहले इस पर चाल आपके हाथ मिल जाएगी। –

उत्तर

0
profile.chart.nil?  

काम नहीं करता है?

+0

यह मुझे टेस्ट केस लिखने में कैसे मदद करता है कि ऑब्जेक्ट लोड नहीं होता है? –

संबंधित मुद्दे

 संबंधित मुद्दे