108 votes

find () avec nil quand il n'y a pas d'enregistrements

Dans mon programme de rails actuel lorsque j'utilise quelque chose comme

  user = User.find(10)
 

Quand il n'y a pas d'utilisateur avec ID = 10, j'aurai une exception comme:

 ActiveRecord::RecordNotFound: Couldn't find User with ID=10
 

Puis-je obtenir nil au lieu de générer une exception, donc lorsque je fais quelque chose comme:

 unless user = Challenge.find(10)
  puts "some error msg"         
end
 

Je veux juste avoir zéro quand il n'y a pas d'enregistrements et que je ne veux pas utiliser begin / rescue

Merci

189voto

apneadiving Points 64660

Oui, fais juste:

 Challenge.find_by_id(10)
 

15voto

beanie Points 728

vous pouvez le faire un peu de hackish, utilisez simplement l'interface de requête ActiveRecord.

cela retournera nil, au lieu de lever une exception

   User.where(:id => 10).first
 

4voto

tonymarschall Points 1824

Vous pouvez essayer ceci Challenge.exists?(10)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X