40 lines
982 B
Ruby
40 lines
982 B
Ruby
# frozen_string_literal: true
|
|
module Resolvers
|
|
class ModelErrors
|
|
attr_reader :full_messages, :field_name, :messages, :path
|
|
|
|
def initialize(args)
|
|
@full_messages = args[:full_messages]
|
|
@field_name = args[:field_name]
|
|
@messages = args[:messages]
|
|
@path = args[:path]
|
|
end
|
|
|
|
def self.from_active_record_model(model)
|
|
return if model&.errors.blank?
|
|
|
|
model.errors.messages.map do |field, messages|
|
|
new(
|
|
full_messages: model.errors.full_messages_for(field),
|
|
field_name: field,
|
|
messages: messages,
|
|
path: ["attributes", field]
|
|
)
|
|
end
|
|
end
|
|
|
|
def self.from_active_record_model_errors(errors)
|
|
return if errors.blank?
|
|
|
|
errors.messages.map do |field, messages|
|
|
new(
|
|
full_messages: errors.full_messages_for(field),
|
|
field_name: field,
|
|
messages: messages,
|
|
path: ["attributes", field]
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|