web-dev-qa-db-fra.com

Ruby Rails - sélectionnez seulement quelques colonnes de la base de données)

Quelle est la manière dans Rails pour structurer la requête sql pour sélectionner uniquement certaines colonnes de la base de données, j'ai quelques grands champs de données que je veux éviter de charger à partir d'appels ajax périodiques continus. La lecture inutile est une ressource consommant et lent.

@itemlist = Item.find(:all, :conditions => { .... } ) #this select all columns 

Je cherche SELECT name, address FROM users; au lieu de SELECT * FROM users;

50
Kapish M

Rails 3:

Item.select("name, address").where( .... )

110
nyaa

Se servir de :select construire. Essaye ça:

@itemlist = Item.select('name, address', conditions: { .... } )

Pour la version précédente de Rails:

@itemlist = Item.find(:all,:select => 'name, address', :conditions => { .... } )
26
dku.rajkumar

En utilisant Arel (aka dans Rails 3), utilisez:

Item.where(...).select("name, address")

En outre, il semble que .select soit ignoré si vous clouez sur une étendue qui a un:.

10
Michelle Tilley
@itemlist = Item.select('name, address').where(...#some condition)
6
Kuberan

Essaye ça:

@itemlist = Item.find(:all, :select => "name, address", :conditions => { .... } )
2
coder_tim

Si vous souhaitez sélectionner des colonnes spécifiques dans le Rails console, pluck( marchera. Exemple:

2.4.1 :007 > User.connection
2.4.1 :006 > User.all.pluck(:email)
   (0.3ms)  SELECT `users`.`email` FROM `users`
 => ["[email protected]", "[email protected]"] 

Notez que cela fonctionnera également à partir de l'application Rails.

1
eriel marimon