diff --git a/app/api/base.rb b/app/api/base.rb index f2b45f05..eb87ad7f 100644 --- a/app/api/base.rb +++ b/app/api/base.rb @@ -3,7 +3,12 @@ module API # Main base class that defines all API versions - class Base < Grape::API +class Base < Grape::API + # Normalize ActiveRecord not-found errors to a stable API message + rescue_from ActiveRecord::RecordNotFound do |e| + model = e.respond_to?(:model) && e.model ? e.model : 'Resource' + error!({ errors: ["#{model} not found"] }, 404) + end insert_after Grape::Middleware::Formatter, Grape::Middleware::Logger, { logger: MR.logger, filter: Class.new do diff --git a/spec/api/v1/publish_spec.rb b/spec/api/v1/publish_spec.rb index 6d0e7472..11b317e9 100644 --- a/spec/api/v1/publish_spec.rb +++ b/spec/api/v1/publish_spec.rb @@ -706,10 +706,7 @@ it 'returns 404' do transfer_ownership expect_status(:not_found) - expect_json( - 'errors.0', - "Couldn't find Organization with 'id'=#{new_organization_id}" - ) + expect_json('errors.0', 'Organization not found') end end