2013-06-14 8 views
24

से ids सरणी प्राप्त करें मैं सक्रिय रिकॉर्ड संबंध से आईडी की सरणी प्राप्त करने का एक आसान/तेज़ तरीका ढूंढ रहा हूं।रेल सक्रिय रिकॉर्ड -

वर्तमान में मेरे पास है:

product_ids = Product.select(:id).where(:colour => 'blue').all.map{|p|p.id} 

लेकिन वह गंदा है और एक मानचित्र की आवश्यकता है ..

कुछ इस तरह कूलर होगा:

product_ids = Product.where(:colour => 'blue').ids 

कोई भी विचार?

धन्यवाद :)

+4

प्लक यहां सबसे अच्छा समाधान है, लेकिन बस एक बीटीडब्ल्यू के रूप में: 'मानचित्र {| p | पी.आईडी} 'क्या आप' नक्शा (और: आईडी) लिख सकते हैं। यह सभी गणक ('प्रत्येक ',' कोई भी? ',' चयन', 'अस्वीकार' इत्यादि) के लिए सच है, और प्रत्येक ऑब्जेक्ट पर प्रतीक को कॉल करेगा जो इसे लूप करता है। – jokklan

+0

ओह हाँ, मुझे 'नक्शा (और: आईडी) के बारे में पता था, इसे लिखते समय बस एक मानसिक खाली था: पी – complistic

+0

पर्याप्त मेला: पी! लेकिन किसी भी तरह से यह प्रश्न पढ़ने वाले अन्य उपयोगकर्ताओं के लिए जानना अच्छा लगता है :) – jokklan

उत्तर

52

थोड़ा और अधिक साफ समाधान:

Product.where(:colour => 'blue').pluck(:id) 
+0

धन्यवाद, यह बहुत अच्छा काम करता है! मुझे इसे पहले नहीं मिला क्योंकि यह दस्तावेज़ों में गणनाओं के तहत है .. http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html – complistic

7

पढ़ रहे हैं पिछले उत्तरों के निर्माण करने के लिए, यदि आप एक संघ के माध्यम से काम कर रहे हैं, तो आप पूछताछ में केवल _ids जोड़ सकते हैं।

अपने उदाहरण में

तो, अगर एक Supplierhas_manyProducts, तो:

supplier.product_ids 

उत्पाद id कि सप्लायर के अंतर्गत आता है के अपने सरणी लौट आते हैं।

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