class ViewModel::AbstractErrorCollection

Abstract collection of errors

Attributes

causes[R]

Public Class Methods

for_errors(errors) click to toggle source
# File lib/view_model/error.rb, line 145
def self.for_errors(errors)
  if errors.size == 1
    errors.first
  else
    self.new(errors)
  end
end
new(causes) click to toggle source
Calls superclass method ViewModel::AbstractError::new
# File lib/view_model/error.rb, line 118
def initialize(causes)
  @causes = Array.wrap(causes)
  unless @causes.present?
    raise ArgumentError.new('A collection must have at least one cause')
  end

  super()
end

Public Instance Methods

aggregation?() click to toggle source
# File lib/view_model/error.rb, line 141
def aggregation?
  true
end
detail() click to toggle source
# File lib/view_model/error.rb, line 137
def detail
  "ViewModel::AbstractErrors: #{cause_details}"
end
status() click to toggle source
# File lib/view_model/error.rb, line 127
def status
  causes.inject(causes.first.status) do |status, cause|
    if status == cause.status
      status
    else
      400
    end
  end
end

Protected Instance Methods

cause_details() click to toggle source
# File lib/view_model/error.rb, line 155
def cause_details
  causes.map(&:detail).join('; ')
end