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;
Rails 3:
Item.select("name, address").where( .... )
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 => { .... } )
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:.
@itemlist = Item.select('name, address').where(...#some condition)
Essaye ça:
@itemlist = Item.find(:all, :select => "name, address", :conditions => { .... } )
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.