Skip to content

Commit 7fb98fc

Browse files
committed
Refactor error array generation
1 parent b3f276f commit 7fb98fc

1 file changed

Lines changed: 14 additions & 13 deletions

File tree

lib/jsonapi/exceptions.rb

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,10 @@ def errors
294294
end
295295

296296
class ValidationErrors < Error
297-
attr_accessor :messages, :resource_associations
297+
attr_reader :error_messages, :resource_associations
298+
298299
def initialize(resource)
299-
@messages = resource.model.errors.messages
300+
@error_messages = resource.model.errors.messages
300301
@resource_associations = resource.class._associations.keys
301302
@key_formatter = JSONAPI.configuration.key_formatter
302303
end
@@ -306,21 +307,21 @@ def format_key(key)
306307
end
307308

308309
def errors
309-
messages.inject([]) do |arr, element|
310-
arr.concat(
311-
element[1].map do |message|
312-
JSONAPI::Error.new(code: JSONAPI::VALIDATION_ERROR,
313-
status: :unprocessable_entity,
314-
title: "#{format_key(element[0])} - #{message}",
315-
detail: message,
316-
source: { pointer: pointer(element[0]) })
317-
end
318-
)
319-
end
310+
error_messages.map do |attr_key, messages|
311+
messages.map { |message| json_api_error(attr_key, message) }
312+
end.flatten
320313
end
321314

322315
private
323316

317+
def json_api_error(attr_key, message)
318+
JSONAPI::Error.new(code: JSONAPI::VALIDATION_ERROR,
319+
status: :unprocessable_entity,
320+
title: "#{format_key(attr_key)} - #{message}",
321+
detail: message,
322+
source: { pointer: pointer(attr_key) })
323+
end
324+
324325
def pointer(attr_or_association_name)
325326
if resource_associations.include?(attr_or_association_name)
326327
"/data/relationships/#{attr_or_association_name}"

0 commit comments

Comments
 (0)