class ErrorMessagesContainer::ErrorMessages

Public Class Methods

new(args = {}) click to toggle source

available args:

base_name - name of the default section
error_messages - Array or String with error message(s) for base section
# File lib/error_messages_container.rb, line 13
def initialize(args = {})
  @error_messages = {base: []}
  @group_names = {base: args[:base_name] || 'base_section'}
  define_group_reader(:base)
  self.add(args[:error_messages]) if args.has_key?(:error_messages)
end

Public Instance Methods

add(error, group_name = :base) click to toggle source
# File lib/error_messages_container.rb, line 20
def add(error, group_name = :base)
  if error.is_a?(String)
    @error_messages[group_name.to_sym] << error
  elsif error.is_a?(Array)
    @error_messages[group_name.to_sym] += error
  end
end
add_group(group_name, group_description) click to toggle source
# File lib/error_messages_container.rb, line 28
def add_group(group_name, group_description)
  if @error_messages[group_name.to_sym].blank? && @group_names[group_name.to_sym].blank?
    @error_messages[group_name.to_sym] = []
    @group_names[group_name.to_sym] = group_description
    define_group_reader(group_name)
  end
end
all_group_names() click to toggle source
# File lib/error_messages_container.rb, line 44
def all_group_names
  @group_names
end
all_group_types() click to toggle source
# File lib/error_messages_container.rb, line 52
def all_group_types
  @error_messages.keys
end
all_messages() click to toggle source
# File lib/error_messages_container.rb, line 36
def all_messages
  @error_messages.reject{|_, messages| messages.blank?}
end
blank?() click to toggle source
# File lib/error_messages_container.rb, line 56
def blank?
  @error_messages.values.collect(&:blank?).all?
end
messages_for_group(group_name) click to toggle source
# File lib/error_messages_container.rb, line 40
def messages_for_group(group_name)
  @error_messages[group_name.to_sym]
end
name_for_group(group_name) click to toggle source
# File lib/error_messages_container.rb, line 48
def name_for_group(group_name)
  @group_names[group_name.to_sym]
end
present?() click to toggle source
# File lib/error_messages_container.rb, line 60
def present?
  !blank?
end

Private Instance Methods

define_group_reader(group_name) click to toggle source

дефайн методов для удобного получения ошибок в группе и названия группы define methods for comfortable access to error group and group name

# File lib/error_messages_container.rb, line 68
    def define_group_reader(group_name)
      class_eval <<-EOT, __FILE__, __LINE__ + 1
      def #{group_name}_group_messages          # def base_group_messages
        @error_messages[:#{group_name}]         #   @error_messages[:base]
      end                                       # end

      def #{group_name}_group_name              # def base_group_name
        @group_names[:#{group_name}]            #   @group_names[:base]
      end                                       # end
      EOT
    end