2009-08-06 11 views

Antwort

10

Es gibt eine :select Option auf Methoden finden. Auf diese Weise können Sie tun:

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

Die zurückgegebenen Objekte zur Verfügung User Instanzen mit diesen Attributen wird.

Oder wenn Sie nur die Werte wollen, ohne sie als User Instanzen zu umhüllen. Sie können User eine Methode hinzufügen, um sie zurückzugeben.

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

, die ein Array von Hash-Mapping-Spaltennamen auf den Wert für diese Zeile zurückgibt. Z.B. [{'id' => 1, 'name' => 'user1', 'username' => 'username1'}, ... ]

+3

In Rails 3: ' User.select ("id, name, username") ' –

3

Sie können tun, auch

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

eine Liste der Benutzer-IDs zu erhalten, wenn Sie

+0

Ich habe schon eine Weile gegoogelt. Vielen Dank! – Ashitaka

+3

Ich empfehle es nicht so. Sehr langsam –

+0

Dies ist eine Antwort, aber es ist ziemlich langsam. 'Benutzer.find (: all) 'gibt eine vollständige Sammlung von ActiveRecord-Objekten für jedes Objekt zurück. dann mit Ruby es über diese Objekte und gibt nur die IDs zurück. Sie haben immer noch diese Sammlung warten auf Müll gesammelt werden. hoffentlich werden Ihre IDs nicht für andere speicherintensive Aktionen verwendet. 'User.pluck' und' User.select' sind effizienter –

0

In mongoid eine Liste von Benutzer-IDs oder Namen zu bekommen versuchen, das wäre:

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

Hübsche alte Frage, aber die Schienen 3 Weg wäre:

User.pluck(:id) 
0

SQL

SELECT id,name,username FROM Users

RUBY

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

mit der Bedingung, können Sie schreiben wie: User.select(:id, :name, :username).find_by(:age 22)

1

Wir select für symbol oder string wie verwenden können:

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

oder

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

für Sie eigentlich nur schreiben müssen diese

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

Sie auch in einem Array übergeben werden kann, etwa so:

Model.all.select ['id', 'title'] 
Verwandte Themen