Sha256: c01cc7fc832fad707b02ca578900fcecd594f91821797e24776c37b73fddef04

Contents?: true

Size: 1.56 KB

Versions: 3

Compression:

Stored size: 1.56 KB

Contents

module SimpleModel

  module Errors
    def errors
      @errors ||= ErrorsHash.new
      @errors
    end


    def valid?
      self.errors.clear if errors
      validate
      self.errors.blank? || self.errors.empty?
    end

    def errors?
      !self.errors.nil? && !errors.empty?
    end


    def errors_on(attr)
      self.valid?
      [self.errors.on(attr.to_s)].flatten.compact
    end

    alias :error_on :errors_on

    def errors_to_s
      error_string = ""
      self.errors.full_messages.each do |m|
        error_string << "#{m} "
      end
      error_string
    end

    def validate
      # Override to implement validation
    end

    def errors_for_flash
      error_string = ""
      errors.full_messages.each do |m|
        error_string << "<div>#{m}</div>"
      end
      error_string
    end

    class ErrorsHash
      attr_accessor :errors
      def initialize
        errors
      end

      def errors
        @errors ||= {}
        @errors
      end

      def clear
        self.errors = {}
      end

      def add(attr, message)
        errors[attr.to_s] ||= []
        errors[attr.to_s] << message
      end
      def count
        errors.length
      end
      def empty?
        errors.empty?
      end
      def full_messages
        full_messages = []
        errors.each do |error|
          error[1].each do |message|
            full_messages << "#{error[0].titleize} #{message}"
          end
        end
        full_messages
      end


      def on(attr)
        errors[attr.to_s] if errors[attr.to_s]
      end

      alias :[] :on
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
simple_model-0.1.1 lib/simple_model/errors.rb
simple_model-0.1.0 lib/simple_model/errors.rb
simple_model-0.0.1 lib/simple_model/errors.rb