2009-02-18 8 views
6

après-midi,Ruby on Rails: test si les résultats ActiveRecord comprennent une valeur

Disons que je recueillir une sélection aléatoire d'utilisateurs:

User.find (: all,: limit => 10,: ordre => "rand()")

Maintenant à partir de ces résultats, je veux voir si l'utilisateur avec l'ID de 3 a été inclus dans les résultats, quelle serait la meilleure façon de trouver cela?

J'ai pensé à Array.include? mais cela semble être une impasse pour moi.

Merci

JP

Répondre

7
users = User.find(:all, :limit => 10, :order => "rand()") 
users.any? {|u| u.id == 3} 
2
assert random_users.include?(User.find 3), "Not found!" 

objets d'enregistrement actifs sont considérés comme égaux si elles ont les mêmes ids. Array # include? respecte l'égalité définie par les objets via la méthode ==.

0

Utilisateur.find (: tout,: limite => 10,: order => "rand()"). Any? {| u | u.id == 3}

Cela vous évitera de faire une autre recherche.