J'ai un exemple de code comme ceci:ActiveRecord :: RecordNotFound comme réponse la manipulation
def update
if @transaction.update(transaction_params)
render :show, status: :ok
else
render json: @transaction.errors, status: :unprocessable_entity
end
end
Et lorsque je tente de mettre à jour dossier qui n'existe pas, dans d'autres mots contrôleur soulève ActiveRecord :: RecordNotFound. Je ne ai pas besoin de sauver et rendre quelque chose, que cette exception a son propre gestionnaire de réponse ou quelque chose, ce que je reçois dans la réponse lorsqu'il est fourni id valide à la méthode ci-dessus, capture d'écran postier:
est la version texte ici:
{
"status": 404,
"error": "Not Found",
"exception": "#<ActiveRecord::RecordNotFound: Couldn't find Transaction with 'id'=88 [WHERE \"transactions\".\"active\" = ?]>",
"traces": {
"Application Trace": [
{
"id": 6,
"trace": "app/controllers/api/v1/transactions_controller.rb:42:in `set_transaction'"
}
],
"Framework Trace": [
{
"id": 0,
"trace": "vendor/bundle/gems/activerecord-5.1.4/lib/active_record/relation/finder_methods.rb:343:in `raise_record_not_found_exception!'"
},
{
Cependant quand j'ajoute ma propre classe de contrôleur, et je le soulève du modèle, je reçois 500 si je ne délivrerai spécifiquement, dans le contrôleur.
Comment cela est-il fait pour ActiveRecord :: RecordNotFound? Comment puis-je ajouter un gestionnaire de réponse à mon erreur personnalisée?