Sha256: c6ca28a0f19628990c95155a12c6f3ddc44417c50ce16ac3dc70efb9b0144cd8
Contents?: true
Size: 683 Bytes
Versions: 1
Compression:
Stored size: 683 Bytes
Contents
# frozen_string_literal: true require "solid/validators" class SingletonValidator < ActiveModel::EachValidator def validate_each(model, attribute, value) with_option = Array.wrap(options[:with] || options[:in]) return model.errors.add(attribute, options[:message] || "is not a class or module") unless value.is_a?(Module) return if with_option.any? do |type| raise ArgumentError, "#{type.inspect} is not a class or module" unless type.is_a?(Module) value == type || (value < type || value.is_a?(type)) end message = "is not #{with_option.map(&:name).join(" | ")}" Solid::Validators.add_error(model, attribute, message, options) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
solid-process-0.4.0 | lib/solid/validators/singleton_validator.rb |