Rails de trouver le guide ActiveRecord::RecordNotFound
J'ai une table qui inclut "un appartient à" dans le modèle.
Le tableau comprend les xx_id champ de lier les deux tables.
Mais, parfois, le xx_id va être vide.
Quand il est, je reçois ActiveRecord::RecordNotFound.
Je ne veux pas d'une erreur, je veux juste un écran blanc pour ce champ.
Que proposez-vous?
- Comment êtes-vous charger d'obtenir cette erreur?
- Postez votre code de contrôleur.
- Je pense à quelque chose comme
if xx_id.nil? ""
syntaxe qui est par défaut le champ vide si l'enregistrement estnil
mais pas sûr que ce serait de couvrir les Pas Trouvé de cas.
Vous devez vous connecter pour publier un commentaire.
Rails de toujours faire un ActiveRecord::RecordNotFound exception lorsque vous utilisez le
find
méthode. Lefind_by_*
méthodes, cependant, le retournil
alors qu'aucun enregistrement n'est trouvé.La ActiveRecord documentation nous dit:
Si vous souhaitez revenir
nil
lorsque les dossiers ne peut pas être trouvé, il suffit de gérer l'exception comme suit:find_by_id
est une meilleure solution pour le retournil
au lieu de l'interception d'une exception.@model = Model.find_by_id(params[:model_id]) if @model.nil? ...
find_by
méthodes sont vulnérables à l'Injection SQL, donc essayez d'utiliser la méthode find, comme suggéré dans la réponse. blog.phusion.nl/2013/01/03/...find_by_id
est la bonne méthode à utiliser.Ne pouvais pas vous écrire
ActiveRecord::RecordNotFound
. Si vous voulez aller à la rescousse de la solution plutôt que de.find_by_id
il serait préférable de secours que l'erreur attendue.retourne
Record
objet s'il est trouvé ou nil si elle ne l'est pas.Lorsque vous appelez, vous obtiendrez un tableau.
Lorsque le tableau ne contient pas d'objets, count est égal à zéro.
ou