From c78af4758245197e84383f785f78c332af984d38 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 25 Sep 2020 10:51:08 -0700 Subject: [PATCH] Add validation error serializers --- app/helpers/validation_error_serializer.rb | 33 +++++++++++++++++++++ app/helpers/validation_errors_serializer.rb | 16 ++++++++++ 2 files changed, 49 insertions(+) create mode 100644 app/helpers/validation_error_serializer.rb create mode 100644 app/helpers/validation_errors_serializer.rb diff --git a/app/helpers/validation_error_serializer.rb b/app/helpers/validation_error_serializer.rb new file mode 100644 index 0000000..730f0b6 --- /dev/null +++ b/app/helpers/validation_error_serializer.rb @@ -0,0 +1,33 @@ +class ValidationErrorSerializer + def initialize(record, field, details) + @record = record + @field = field + @details = details + end + + def serialize + { + resource: resource, + field: field, + code: code + } + end + + private + + def resource + @record.class.to_s + end + + def field + @field.to_s + end + + def code + @details[:error].to_s + end + + def underscored_resource_name + @record.class.to_s.gsub('::', '').underscore + end +end \ No newline at end of file diff --git a/app/helpers/validation_errors_serializer.rb b/app/helpers/validation_errors_serializer.rb new file mode 100644 index 0000000..af2affa --- /dev/null +++ b/app/helpers/validation_errors_serializer.rb @@ -0,0 +1,16 @@ + +class ValidationErrorsSerializer + attr_reader :record + + def initialize(record) + @record = record + end + + def serialize + record.errors.details.map do |field, details| + details.map do |error_details| + ValidationErrorSerializer.new(record, field, error_details).serialize + end + end.flatten + end +end \ No newline at end of file