From f367d5e4a090ce06fc4743bc64435a149e1af899 Mon Sep 17 00:00:00 2001 From: Cyril Duchon-Doris Date: Tue, 7 Nov 2017 16:20:33 +0100 Subject: [PATCH 1/3] Add error code under meta in serialization --- lib/jsonapi_errorable/serializers/validation.rb | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/jsonapi_errorable/serializers/validation.rb b/lib/jsonapi_errorable/serializers/validation.rb index fb67037..7081fd3 100644 --- a/lib/jsonapi_errorable/serializers/validation.rb +++ b/lib/jsonapi_errorable/serializers/validation.rb @@ -12,10 +12,16 @@ def initialize(object, relationship_params = {}, relationship_message = {}) def errors return [] unless object.respond_to?(:errors) - all_errors = object.errors.to_hash.map do |attribute, messages| - messages.map do |message| - meta = { attribute: attribute, message: message }.merge(@relationship_message) - meta = { relationship: meta } if @relationship_message.present? + all_errors = object.errors.details.map do |attribute, error_symbols| + error_symbols.map do |error_hash| + error_symbol = error_hash[:error] + message = generate_message(attribute, error_symbol) + + if @relationship_message.present? + meta = { relationship: meta } + else + meta = { attribute: attribute, message: message, code: error_symbol } + end detail = object.errors.full_message(attribute, message) detail = message if attribute.to_s.downcase == 'base' From 4b4b0cd31b962242fbbfc8c7937025f4abd9b36b Mon Sep 17 00:00:00 2001 From: Cyril Duchon-Doris Date: Tue, 7 Nov 2017 16:22:52 +0100 Subject: [PATCH 2/3] Rollback bad code change --- lib/jsonapi_errorable/serializers/validation.rb | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/jsonapi_errorable/serializers/validation.rb b/lib/jsonapi_errorable/serializers/validation.rb index 7081fd3..0d0d610 100644 --- a/lib/jsonapi_errorable/serializers/validation.rb +++ b/lib/jsonapi_errorable/serializers/validation.rb @@ -17,11 +17,8 @@ def errors error_symbol = error_hash[:error] message = generate_message(attribute, error_symbol) - if @relationship_message.present? - meta = { relationship: meta } - else - meta = { attribute: attribute, message: message, code: error_symbol } - end + meta = { attribute: attribute, message: message, code: error_symbol } + meta = { relationship: meta } if @relationship_message.present? detail = object.errors.full_message(attribute, message) detail = message if attribute.to_s.downcase == 'base' From 7e13790ae6562a91348a0ce649cb8900539b48e9 Mon Sep 17 00:00:00 2001 From: Cyril Duchon-Doris Date: Tue, 7 Nov 2017 16:24:59 +0100 Subject: [PATCH 3/3] Call generate_message on ActiveModel::Error object --- lib/jsonapi_errorable/serializers/validation.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jsonapi_errorable/serializers/validation.rb b/lib/jsonapi_errorable/serializers/validation.rb index 0d0d610..e2b2818 100644 --- a/lib/jsonapi_errorable/serializers/validation.rb +++ b/lib/jsonapi_errorable/serializers/validation.rb @@ -15,7 +15,7 @@ def errors all_errors = object.errors.details.map do |attribute, error_symbols| error_symbols.map do |error_hash| error_symbol = error_hash[:error] - message = generate_message(attribute, error_symbol) + message = object.errors.generate_message(attribute, error_symbol) meta = { attribute: attribute, message: message, code: error_symbol } meta = { relationship: meta } if @relationship_message.present?