Sha256: 035721648dd3c12fb6586aac684dda19089af211c4c5875203fba24fd93870de

Contents?: true

Size: 1.19 KB

Versions: 23

Compression:

Stored size: 1.19 KB

Contents

require 'forwardable'

module Locomotive
  module Steam
    module Models
      module Concerns

        module Validation

          def errors
            @errors ||= Errors.new(self)
          end

          def valid?
            true
          end

          class Errors

            include Enumerable
            extend Forwardable

            attr_accessor :messages

            def_delegators :@messages, :[], :clear, :empty?, :each, :size, :to_hash

            alias_method :blank?, :empty?

            def initialize(base)
              @base     = base
              @messages = HashWithIndifferentAccess.new({})
            end

            def add_on_blank(attribute)
              value = @base.send(attribute)
              add(attribute, :blank) if value.blank?
            end

            def add(attribute, message)
              (@messages[attribute] ||= []) << generate_message(message)
            end

            def generate_message(message)
              case message
              when :blank, :unique then I18n.t(message, scope: 'errors.messages')
              else
                message
              end
            end

          end

        end

      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
locomotivecms_steam-1.3.0.rc2 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.1.2 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.2.1 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.3.0.rc1 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.2.0 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.2.0.rc3 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.2.0.rc2 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.2.0.rc1 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.2.0.beta1 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.1.1 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.1.0 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.1.0.rc3 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.1.0.rc2 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.1.0.rc1 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.0.1 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.0.0 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.0.0.rc10 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.0.0.rc9 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.0.0.rc8 lib/locomotive/steam/models/concerns/validation.rb
locomotivecms_steam-1.0.0.rc6 lib/locomotive/steam/models/concerns/validation.rb