2009-08-06 22 views
7

मैं मॉडल (आईडी, नाम) से केवल विशिष्ट विशेषताओं का चयन करना चाहता हूं।मॉडल से केवल विशिष्ट विशेषताओं का चयन कैसे करें?

चयन आईडी, नाम, से उपयोगकर्ताओं को

क्या आप जानते हैं मैं यह कैसे संभाल कर सकते हैं उपयोगकर्ता नाम:

एसक्यूएल कमान उदाहरण के लिए हो सकता है?

उत्तर

10

खोजने के तरीके पर :select विकल्प है।

User.find(:all, :select => 'id, name, username') 

लौटे वस्तुओं उन विशेषताओं उपलब्ध साथ User उदाहरणों हो जाएगा: यह तुम क्या करने की अनुमति देता है।

या यदि आप वास्तव में उन्हें केवल User उदाहरणों के रूप में लपेटने के बिना मूल्य चाहते हैं। आप उन्हें वापस करने के लिए User पर एक विधि जोड़ सकते हैं।

def self.get_ids_and_names 
    self.connection.select_all("select id, name, username from users") 
end 

जो उस पंक्ति के मान पर हैश मैपिंग कॉलम नाम की एक सरणी लौटाएगा। जैसे [{'id' => 1, 'name' => 'user1', 'username' => 'username1'}, ... ]

+3

रेल 3 में: ' उपयोगकर्ता। चयन ("आईडी, नाम, उपयोगकर्ता नाम") ' –

3

अगर आपको, उपयोगकर्ता की आईडी या नाम

+0

मैं थोड़ी देर के लिए इसके लिए गुगल रहा था। धन्यवाद! – Ashitaka

+3

मैं इसे इस तरह से अनुशंसा नहीं करता हूं। बहुत धीमी –

+0

यह एक उत्तर है, लेकिन इसकी काफी धीमी है। 'उपयोगकर्ता।ढूंढें (: सभी) 'प्रत्येक आइटम के लिए ActiveRecord ऑब्जेक्ट का पूरा संग्रह देता है। फिर रूबी के साथ यह उन वस्तुओं पर नक्शा लगाता है और केवल आईडी लौटाता है। आपको अभी भी उस संग्रह को कचरा इकट्ठा करने का इंतजार है। उम्मीद है कि आपकी आईडी का उपयोग अन्य स्मृति गहन कार्यों के लिए नहीं किया जा रहा है। 'User.pluck' और' User.select' अधिक कुशल हैं –

0

mongoid में की एक सूची है कि हो सकता है पाने के लिए कोशिश कर रहे हैं

User.find(:all).map(&:id) 

उपयोगकर्ता आईडी की एक सूची प्राप्त करने के लिए कर सकते हैं:

User.only(:name, :username).where(id: params[:id]).first 
23

सुंदर पुराने सवाल है, लेकिन रेल 3 तरीका होगा:

User.pluck(:id) 
0

एसक्यूएल

SELECT id,name,username FROM Users

रूबी

User.select(:id, :name, :username)

शर्त के साथ

, आप की तरह लिख सकते हैं: User.select(:id, :name, :username).find_by(:age 22)

1

हम symbol या string जैसे के लिए select उपयोग कर सकते हैं:

User.select("id, name, username") 

या

User.select(:id, :name, :username) 
0
आप के लिए

वास्तव में केवल लिखने की जरूरत है इस

@user= User.select(:attributeN, :attributeN......., attributeN) 
respond_to do |format| 
    format.json { 
    render json: @user 
    } 
0

तुम भी एक सरणी में पारित कर सकते हैं, तो जैसे:

Model.all.select ['id', 'title'] 
संबंधित मुद्दे