मेरे पास लगभग 100 उपयोगकर्ताओं की एक तालिका है और मेरे पास उपयोगकर्ता आईडी की एक सरणी भी है। मैं जो करना चाहता था वह उन सभी उपयोगकर्ताओं को दिखाता है जो उपयोगकर्ता आईडी के इस सरणी का हिस्सा नहीं हैं। जब मैं इसखाली सरणी के साथ रिकॉर्ड्स पुनर्प्राप्त करते समय समस्या
User.where('id NOT IN (?)', [9, 2, 3, 4])
की तरह कुछ करना यह सफलतापूर्वक रिकॉर्ड जहां उपयोगकर्ता आईडी कि सरणी में संबंधित नहीं है देता है। लेकिन अगर कि सरणी की तरह खाली है तो
User.where('id NOT IN (?)', [])
यह किसी भी उपयोगकर्ताओं को वापस वापस नहीं करता है और SQL क्वेरी कि ऐसा क्यों होता या यह एक बग हो सकता है किसी को भी पता है इस
SELECT "users".* FROM "users" WHERE (id NOT IN (NULL))
तरह लग रहा है? मैं PostgreSQL के साथ रेल 3.2.5 का उपयोग कर रहा हूँ।
यह एक रेल मुद्दा या संभवतः एक 'Pg' मणि मुद्दे की तरह दिखता है; यह 'खाली' के रूप में एक खाली सरणी का इलाज कर रहा है। बहुत अजीब - और बुरा व्यवहार। क्या आप सीधे 'पीजी' मणि के साथ तैयार कथन का परीक्षण कर सकते हैं यह देखने के लिए कि क्या यह सरणी पैरामीटर को इस तरह से मानता है या यदि यह रेल/ActiveRecord स्तर है? –
@ क्रेग्रिंजर: यह एक रेल/ActiveRecord समस्या होगी 'pg' समस्या नहीं। एआर प्लेसहोल्डर्स को ही संभालता है। –
@ क्रेग्रिंजर: एआर लोग कभी-कभी एसक्यूएल में आश्चर्यजनक बुरा होते हैं, वे इसे उद्देश्य पर कर रहे हैं। यहां "बेटा, मैं निराश हूं" छवि डालें। –