2017-08-18 13 views
0

Je suis très nouveau à RoR, je sais que ActiveRecord :: RecordNotFound peut être mappé à l'erreur http 404. Y at-il une autre ressource dans ruby ​​sur rails dont l'inexistence soulèvera quelque chose comme ResourceName :: ResourceNameNotFound?Ressources non trouvées erreurs dans Ruby sur rails

Y a-t-il des erreurs soulevées par RoR qui sont équivalentes à 520, 403, 401?

Toute aide serait appréciée.

+1

On appelle la gestion des exceptions, il y a quelques threads qui traitent avec elle: http://blog.siami.fr/diving-in-rails-exceptions-handling ou celui-ci https://medium.com/rails-ember-beyond/error-handling-in-rails-the-modular-way-9afcddd2fe1b Je ne suis pas vraiment versé dans le sujet, donc je ne peux pas vraiment en recommander un mais si vous en lisez quelques-uns, vous aurez un bon aperçu – Maxence

Répondre

1

Les lignes doivent répondre avec les codes d'erreur HTTP appropriés en corrélation avec les conventions du protocole HTTP. J'ai travaillé avec Rails pendant un moment et je n'ai vu aucune exception. Vous pouvez également augmenter vos propres exceptions comme cette

@record = ModelName.find_by(field_name_goes_here: params[:some_parameter_name_goes_here]) 
    if not @record.blank? 
     render "view_file_name_goes_here" 
    else 
     raise ActiveRecord::RecordNotFound 
    end 

Ce code entraînera des rails pour répondre avec une 404. Faire une demande d'une route qui n'a pas été définie se traduira également par une 404.

d'autres exemples:

une erreur de syntaxe dans votre code répondra avec un 500.

Si vous utilisez concevoir ou d'un autre petit bijou d'autorisation, une demande non autorisée entraînera un rendu 401. Il n'y aura pas anyt Hing dans Rails qui rendrait un 401 hors de la boîte. Rappelez-vous que toutes vos demandes sont définies via routes.rb et que c'est à vos contrôleurs de décider quelle réponse afficher et si cette réponse doit renvoyer un code d'erreur HTTP.

Cette question ici fournit des informations sur la façon de rendre tous les types de codes d'erreur:

Return a specific http status code in Rails

Si vous cherchez à déboguer le code d'erreur HTTP je suggère de définir la configuration de l'environnement de rails pour examiner toutes les demandes comme demandes locales. Cela affichera une erreur compréhensible.

Purpose of "consider_all_requests_local" in config/environments/development.rb?

+0

Merci pour l'explication élaborée. Mais ma question était plutôt de savoir quelles erreurs provoqueront les rails à répondre avec 500, 403 et 401. Comme vous l'avez dit dans votre réponse, ActiveRecord :: RecordNotFound va provoquer des rails avec 404, quelles erreurs vont provoquer les rails à répondre avec des codes d'erreur avez-vous mentionné? –

+0

J'ai modifié ma réponse. J'espère que ça aide. –

0

En rails vous pouvez soulever erreur lorsque non-concordance comme votre résultat particulier vous mentionner ActiveRecord::RecordNotFound et chaque erreur a sa signification comme.

401 is for NOT_AUTHORIZED 
403 is for FORBIDDEN 
500 is for server error 

et il y a beaucoup d'autres