Sha256: 450dbb4ba9231597f7f135e5bfd839f9b01fb4f130b89875b696bd23caeb9d98

Contents?: true

Size: 647 Bytes

Versions: 4

Compression:

Stored size: 647 Bytes

Contents

module Zermelo
  module Records
    class TypeValidator < ActiveModel::Validator
      def validate(record)
        attr_types = record.class.attribute_types

        attr_types.each_pair do |name, type|
          value = record.send(name)
          next if value.nil?
          valid_type = Zermelo::ALL_TYPES[type]
          unless valid_type.any? {|t| value.is_a?(t) }
            count = (valid_type.size > 1) ? 'one of ' : ''
            type_str = valid_type.collect {|t| t.name }.join(", ")
            record.errors.add(name, "should be #{count}#{type_str} but is #{value.class.name}")
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
zermelo-1.4.3 lib/zermelo/records/type_validator.rb
zermelo-1.4.2 lib/zermelo/records/type_validator.rb
zermelo-1.4.1 lib/zermelo/records/type_validator.rb
zermelo-1.4.0 lib/zermelo/records/type_validator.rb