2009-08-06 16 views

Respuesta

10

Hay una opción :select en los métodos de búsqueda. Esto le permite hacer:

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

Los objetos devueltos serán User casos con esos atributos disponibles.

O si realmente desea los valores sin envolverlos como User instancias. Puede agregar un método al User para devolverlos.

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

que devolverá una matriz de nombre de columna de asignación de hash al valor de esa fila. P.ej. [{'id' => 1, 'name' => 'user1', 'username' => 'username1'}, ... ]

+3

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

3

También se puede hacer

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

para obtener una lista de los identificadores de usuario si usted está tratando de obtener una lista de los identificadores o nombres

+0

He estado buscando esto por un tiempo. ¡Gracias! – Ashitaka

+3

No lo recomiendo de esta manera. Muy lento –

+0

Esta es una respuesta, pero es bastante lenta. 'Usuario.find (: all) 'devuelve una colección completa de objetos ActiveRecord para cada elemento. luego, con Ruby se correlaciona con esos objetos y devuelve solo los ID. Todavía tienes esa colección esperando ser recogida de basura. con suerte, sus ID no se están utilizando para otras acciones intensivas en memoria. 'User.pluck' y' User.select' son más eficientes –

0

En MongoId del usuario, que sería:

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

Bastante vieja pregunta, pero los carriles 3 manera sería:

User.pluck(:id) 
0

SQL

SELECT id,name,username FROM Users

RUBY

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

con la condición, se puede escribir como: User.select(:id, :name, :username).find_by(:age 22)

1

Podemos utilizar select para symbol o string tales como:

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

o

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

hecho de que sólo es necesario escribir este

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

También se puede pasar de una matriz, así:

Model.all.select ['id', 'title'] 
Cuestiones relacionadas