Sha256: 34f00cb61b9dc02ad18467f22acba5027d494435473b42a0942472140334b610

Contents?: true

Size: 714 Bytes

Versions: 1

Compression:

Stored size: 714 Bytes

Contents

require 'mail'
module ActiveModel
  module Validations
    class EmailValidator < EachValidator
      EMAIL_REGEXP = %r{\A[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\z}

      def validate_each(record,attribute,value)
        opts = options.dup
        opts[:strict] ||= false

        begin
          address = Mail::Address.new(value)
          valid   = address.domain && 
                    value.include?(address.address) &&
                    ( 
                      !opts[:strict] || 
                      address.domain.match(EMAIL_REGEXP) 
                    )
        rescue Mail::Field::ParseError
          valid = false
        end
        record.errors.add(attribute) unless valid
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activevalidators-1.9.0 lib/active_model/validations/email_validator.rb