Sha256: 5f4eb74544905ff8bc17f7d06357ddf8ffc89202111377b4fc1effa595f0a474
Contents?: true
Size: 944 Bytes
Versions: 3
Compression:
Stored size: 944 Bytes
Contents
module Volt class EmailValidator DEFAULT_REGEX = /^([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})$/i ERROR_MESSAGE = 'must be an email address' def self.validate(model, old_model, field_name, options) new(model, field_name, options).errors end def initialize(model, field_name, options) @value = model.read_attribute field_name case options when Hash, true, false configure options else fail 'arguments can only be a Boolean or a Hash' end end def valid? return false unless @value.is_a? String !!@value.match(@custom_regex || DEFAULT_REGEX) end def errors valid? ? {} : { email: [ @custom_message || ERROR_MESSAGE ] } end private def configure(options) return unless options.is_a? Hash @custom_message = options.fetch(:error_message) { nil } @custom_regex = options.fetch(:with) { nil } end end end
Version data entries
3 entries across 3 versions & 1 rubygems