2016-09-19 9 views
9

क्या कोई मुझे uniq और distinct विधियों के बीच उपयोग में अंतर को संक्षेप में समझा सकता है?रेल: uniq बनाम विशिष्ट

मैंने दोनों को समान संदर्भ में उपयोग किया है, लेकिन अंतर मेरे लिए बिल्कुल स्पष्ट नहीं है।

उत्तर

13
  • .distinct विधि एसक्यूएल क्वेरी
  • .uniq विधि सरणी के लिए है

इसके अलावा क्वेरी एक सरणी में कार्य करता है, इस प्रकार .uniq.distinct

रूप में एक ही परिणाम पैदा करता है कृपया ध्यान रखें रेल में है कि रेल 5+ संबंध # uniq को बहिष्कृत किया गया है और इसके बजाय संबंध # विशिष्ट का उपयोग करने की अनुशंसा की जाती है। http://edgeguides.rubyonrails.org/5_0_release_notes.html#active-record-deprecations

देखें
3

इसके बिल्कुल आपके सवाल का जवाब नहीं है, लेकिन क्या मुझे पता है:

अगर हम पर विचार ActiveRecord संदर्भ तब uniqविशिष्ट के लिए सिर्फ एक उपनाम है। और दोनों क्वेरी परिणाम सेट पर डुप्लिकेट को हटाने के रूप में काम करते हैं (जिसे आप एक स्तर तक कह सकते हैं)।

और सरणी संदर्भ यूनिक इतना शक्तिशाली है कि यह तत्वों को घोंसले के बावजूद डुप्लिकेट हटा देता है। उदाहरण के लिए

आगमन = [[ "पहली"], [ "दूसरी"], [ "पहली"]]

और हम

arr.uniq

करते हैं जवाब होगा: [["पहला"], ["दूसरा"]]

तो यदि तत्व ब्लॉक हैं तो भी यह गहरे में जाएगा और डुप्लीकेट हटा देगा।

उम्मीद है कि यह आपको कुछ तरीकों से मदद करता है।

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