Vérifier si ActiveRecord trouver renvoie un résultat
Je suis en train de vérifier si l'un de trouver la méthode retourne un résultat. Ma méthode est la suivante:
post = Post.find(:all, :conditions => { :url => params['url'] }, :limit => 1)
Ce serait une bonne façon de vérifier que post
contient un résultat?
Vous devez vous connecter pour publier un commentaire.
find :all
renvoie un tableau vide ([]
) si aucune ligne n'est retournée, de sorte que vous pouvez simplement utiliser de cette façon:Par ailleurs, si vous ne
find :all
vous allez obtenir un tableau, pas une seule ligne. Si vous essayez d'obtenir juste un Post, il serait plus propre d'utiliser lafind_by
helper oufind :first
ou tout simplementfirst
à la place:Vous pouvez essayer ActiveRecord::Base.existe? avant
Utiliser le BANG! la version de la
find_by_url
méthode pour obtenir de soulever une exception ne pourrait être trouvé, et puis de sauvetage plus tard, dans la même méthode/de l'action.Si vous n'avez pas de soulever une exception ici, je crois que les Rails de montrer le public/404.html page.
si le post ne contient aucun résultat sera une liste vide et ensuite:
retournera true.
il peut être aussi simple que de changer votre finder:
Avec cette finder, post renvoie une valeur unique ou nul. Parce que nul se comporte comme faux dans un rapport de condition, vous pouvez dire quelque chose comme:
sera de retour nul rathering que le soufflage de votre programme quand il ne peut pas trouver un enregistrement.
Bien sûr, il y a
qui renvoie toujours un tableau de résultats. Auquel cas, vous pouvez simplement lancer une
ou
ou de cours,
Désolé je me suis un peu emporté, il y
Une autre façon de le faire est de vérifier avec ActiveRecord#tout?.