class Light::Services::Messages

Attributes

storage[RW]

Getters / Setters

Public Class Methods

new() click to toggle source
# File lib/light/services/messages.rb, line 6
def initialize
  @storage = {}
end

Public Instance Methods

add(key, message, rollback: true) click to toggle source
# File lib/light/services/messages.rb, line 10
def add(key, message, rollback: true)
  storage[key] ||= []
  storage[key] << message

  rollback! if rollback
end
any?() click to toggle source
# File lib/light/services/messages.rb, line 47
def any?
  !blank?
end
blank?() click to toggle source
# File lib/light/services/messages.rb, line 43
def blank?
  storage.empty?
end
delete(key) click to toggle source
# File lib/light/services/messages.rb, line 39
def delete(key)
  storage.delete(key)
end
each() { |key, message| ... } click to toggle source
# File lib/light/services/messages.rb, line 63
def each
  flatten.each do |key, message|
    yield key, message
  end
end
flatten() click to toggle source
# File lib/light/services/messages.rb, line 55
def flatten
  to_hash.flat_map do |key, messages|
    messages.map do |message|
      [key, message]
    end
  end
end
from_record(record, rollback: true) click to toggle source
# File lib/light/services/messages.rb, line 17
def from_record(record, rollback: true)
  return unless record.errors.any?

  record.errors.messages.each do |key, messages|
    messages.each do |message|
      add(key, message, rollback: false)
    end
  end

  rollback! if rollback
end
from_service(service, rollback: true) click to toggle source
# File lib/light/services/messages.rb, line 29
def from_service(service, rollback: true)
  return unless service.errors.any?

  service.errors.each do |key, message|
    add(key, message, rollback: false)
  end

  rollback! if rollback
end
to_h()
Alias for: to_hash
to_hash() click to toggle source
# File lib/light/services/messages.rb, line 51
def to_hash
  storage
end
Also aliased as: to_h

Private Instance Methods

rollback!() click to toggle source
# File lib/light/services/messages.rb, line 76
def rollback!
  raise ActiveRecord::Rollback if defined?(ActiveRecord::Rollback)
end