वर्तमान में सहेजने पर मैं यह देखने की कोशिश कर रहा हूं कि रिकॉर्ड एक विशेष 'स्कोप' में आता है या नहीं। यह 'स्कोप' वास्तव में कुछ कहां के लिए कुछ सहेजे गए तर्क हैं। इसके अलावा 'स्कोप' के साथ मैं केवल ऑब्जेक्ट के मानों की जांच कर रहा हूं, यह डेटाबेस में अन्य ऑब्जेक्ट्स से संबंधित नहीं है, इसलिए डेटाबेस को पूछताछ हमेशा खत्म हो जाएगी यदि यह समझ में आता है।यह देखने के लिए जांचें कि क्या एक विशेष सक्रिय रिकॉर्ड ऑब्जेक्ट एक विशेष 'स्कोप' में है
मैं केवल नीचे समाधान
begin
result = self.class.where(scope).find(self.id)
rescue
result = false
end
इस के साथ इस मुद्दे मैं डेटाबेस भले ही मैं पहले से ही रिकॉर्ड है क्वेरी करने के लिए है कि है साथ आने के लिए सक्षम किया गया है, और मैं यह नहीं चलाने के लिए है केवल सहेजने से पहले, लेकिन मूल्यों की जांच करने के लिए सहेजने के बाद और यह मूल्य सहेजने के बाद होगा, क्योंकि अद्यतन संस्करण के लिए डेटाबेस से पूछताछ करने का कोई तरीका नहीं है अगर इसे सहेजा नहीं गया है।
इनमें से कई चेक हो सकते हैं, इसलिए मैं इसे दो बार करने से बचाना चाहता हूं, और कई बार डेटाबेस से पूछताछ करना भी चाहूंगा, भले ही आखिरकार मैं आईडी द्वारा कुछ देख रहा हूं।
एकमात्र अन्य समाधान जो मैं सोचने में सक्षम हूं, यह एक तरीका होगा कि कुछ ऑब्जेक्ट पास करते समय एक बूलियन लौटने वाली प्रो में कॉल कहां से अनुवाद करें। इसका एकमात्र मुद्दा अनुवाद कर रहा है, यह कुछ सक्रिय रिकॉर्ड एडेप्टर के साथ काम करने के लिए कैसे काम करेगा, जो कि पूरी परियोजना की तरह दिखता है। तो क्या कोई ऐसा करने के लिए किसी तरीके से जानता है, या एक मणि जो मदद करेगा?
पीएस मुझे कैश से 'स्कोप' मिल रहा है, इसलिए मैं इसे एक प्रो के रूप में सहेज नहीं सकता क्योंकि आप रेल के साथ कैश में प्रो नहीं डाल सकते हैं।
आपके द्वारा सहेजे जा रहे रिकॉर्ड का एक ठोस उदाहरण प्रदान करना सहायक हो सकता है, जो दायरे की स्थितियों की तरह दिखता है, और आप ऐसा करने का प्रयास क्यों कर रहे हैं। जो कुछ भी आप करने की कोशिश कर रहे हैं उसके बारे में जाने के लिए एक बेहतर तरीका हो सकता है। – deefour
रिकॉर्ड कुछ भी हो सकता है और इसलिए जब तक डेटाबेस में किसी और चीज की तुलना की आवश्यकता नहीं होती है, तब तक इसे फिर से लागू किया जा सकता है, इसे सेट अप करने के लिए कोई फर्क नहीं पड़ता। हालांकि यह एक कैशिंग प्रणाली के लिए है। तो मूल रूप से अगर सहेजने से पहले या बाद में रिकॉर्ड कैश के 'स्कोप' में आता है तो कैश हटा दिया जाता है। यह वास्तव में जटिल पृष्ठों के लिए है जिन्हें आप कैश करना चाहते हैं, लेकिन जब तक अद्यतन रिकॉर्ड संभवतः कैश का हिस्सा न हो, तब तक समाप्त नहीं होना चाहते हैं। – rovermicrover
यहां एक ही प्रश्न है: http://stackoverflow.com/questions/1255815/check-if-model-instance-falls-within-named-scope-in-rails – voondo