From c2637ca8b8dc80c6625e512bb0dd44580bb86a01 Mon Sep 17 00:00:00 2001 From: mhassaan Date: Thu, 18 Dec 2025 16:56:24 +0100 Subject: [PATCH] fix(active_model_errors): use `messages` instead of `full_messages_for` to avoid prepending attribute name in the message --- lib/jsonapi/rails/serializable_active_model_errors.rb | 2 +- spec/render_jsonapi_errors_spec.rb | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/jsonapi/rails/serializable_active_model_errors.rb b/lib/jsonapi/rails/serializable_active_model_errors.rb index 86d2b15..12803ca 100644 --- a/lib/jsonapi/rails/serializable_active_model_errors.rb +++ b/lib/jsonapi/rails/serializable_active_model_errors.rb @@ -26,7 +26,7 @@ def initialize(exposures) def as_jsonapi error_keys.flat_map do |key| - @errors.full_messages_for(key).map do |message| + @errors.messages[key].map do |message| SerializableActiveModelError.new(field: key, message: message, pointer: @reverse_mapping[key]) .as_jsonapi diff --git a/spec/render_jsonapi_errors_spec.rb b/spec/render_jsonapi_errors_spec.rb index c91bbd4..9a982aa 100644 --- a/spec/render_jsonapi_errors_spec.rb +++ b/spec/render_jsonapi_errors_spec.rb @@ -17,12 +17,12 @@ { 'errors' => [ { - 'detail' => "Name #{I18n.t('errors.messages.blank')}", + 'detail' => "#{I18n.t('errors.messages.blank')}", 'title' => 'Invalid name', 'source' => { 'pointer' => '/data/attributes/name' } }, { - 'detail' => 'Email must be a valid email', + 'detail' => 'must be a valid email', 'title' => 'Invalid email', 'source' => { 'pointer' => '/data/attributes/email' } } @@ -64,12 +64,12 @@ def jsonapi_pointers def create errors = [ { - detail: "Name #{I18n.t('errors.messages.blank')}", + detail: "#{I18n.t('errors.messages.blank')}", title: 'Invalid name', source: { pointer: '/data/attributes/name' } }, { - detail: 'Email must be a valid email', + detail: 'must be a valid email', title: 'Invalid email', source: { pointer: '/data/attributes/email' } }