2012-03-10 5 views
39

dans mon application, j'ai les utilisateurs de différents pays et à effectuer des découvertes sur lesRails: Retrouvez toutes les conditions

J'ai essayé de le faire comme ça dans l'action index

@fromcanada = User.find(:all, :country => 'canada') 

mais je m'y suis l'erreur

Unknown key: country 

Cependant, ce qui me conduit à demander, ce qui peut devenir une clé? Dans mon fichier de schéma de base de données, j'ai une colonne "pays" sur la table des utilisateurs.

t.string "country" 

De plus, quand je l'ai fait une trouvaille tous

@users = User.all 

j'ai pu faire

<%= user.country %></p> 

Pouvez-vous expliquer pourquoi ma trouvaille toutes les conditions ne fonctionnait pas? et montrez-moi comment j'aurais dû le faire?

+1

Quelle version de Rails utilisez-vous? – James

+3

'@fromcanada = User.where (: country => 'canada'). All' serait probablement meilleur style. –

+0

@muistooshort pourquoi appeler 'tout' est nécessaire? Quand vous appelez 'User.all' vous obtenez tous les utilisateurs mais je ne comprends pas quand vous filtrez les utilisateurs avec' where' (désolé pour la question de débutant) –

Répondre

67

Essayez ceci.

@fromcanada = User.find(:all, :conditions => { :country => 'canada' }) 

modifier: Comme jason328 a souligné, la réponse ci-dessus est délaissé dans 3.2, et une réponse mise à jour serait

@fromcanada = User.where(:country => 'canada') 
30

Dans le cas où personne ne lisez les commentaires. Un meilleur format serait

@fromcanada = User.where(country: 'canada').all 

Le code de la réponse précédente est en train d'être déprécié en 3.2.

Et pour ceux qui utilisent Rails 4, il suffit de supprimer la méthode all.

@fromcanada = User.where(country: 'canada').to_a 

Notez que le to_a appelle la requête dans un format de tableau.

+3

Cette utilisation de Relation # tout est dépréciée dans les rails 4. Si vous voulez Pour charger avec impatience, il suffit de remplacer 'all' par' load'. Sinon, vous n'avez même pas besoin du 'all'. Votre réponse n'est pas fausse. Je suis juste impatient de voir les rails 4. – courtsimas

Questions connexes