Sha256: 4c485cef4aaeb4bc65a617ae83a092d2930ee7ab3b332346310de15f687893cb

Contents?: true

Size: 935 Bytes

Versions: 8

Compression:

Stored size: 935 Bytes

Contents

require "valid_email2/address"
require "active_model"
require "active_model/validations"

module ValidEmail2
  class EmailValidator < ActiveModel::EachValidator
    def default_options
      { regex: true, disposable: false, mx: false }
    end

    def validate_each(record, attribute, value)
      return unless value.present?
      options = default_options.merge(self.options)

      address = ValidEmail2::Address.new(value)

      error(record, attribute) && return unless address.valid?

      if options[:disposable]
        error(record, attribute) && return if address.disposable?
      end

      if options[:blacklist]
        error(record, attribute) && return if address.blacklisted?
      end

      if options[:mx]
        error(record, attribute) && return unless address.valid_mx?
      end
    end

    def error(record, attribute)
      record.errors.add(attribute, options[:message] || :invalid)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
valid_email2-2.2.1 lib/valid_email2/email_validator.rb
valid_email2-2.2.0 lib/valid_email2/email_validator.rb
valid_email2-2.1.2 lib/valid_email2/email_validator.rb
valid_email2-2.1.1 lib/valid_email2/email_validator.rb
valid_email2-2.1.0 lib/valid_email2/email_validator.rb
valid_email2-2.0.2 lib/valid_email2/email_validator.rb
valid_email2-2.0.1 lib/valid_email2/email_validator.rb
valid_email2-2.0.0 lib/valid_email2/email_validator.rb