Sha256: 131f18856296ba81c00b304b760e96ee495343f118b51a76a7610fa80e4447a6
Contents?: true
Size: 1.43 KB
Versions: 6
Compression:
Stored size: 1.43 KB
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, disallow_subaddressing: 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[:disallow_dotted] error(record, attribute) && return if address.dotted? end if options[:disallow_subaddressing] error(record, attribute) && return if address.subaddressed? end if options[:disposable] error(record, attribute) && return if address.disposable? end if options[:disposable_domain] error(record, attribute) && return if address.disposable_domain? end if options[:disposable_with_whitelist] error(record, attribute) && return if address.disposable? && !address.whitelisted? 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
6 entries across 6 versions & 1 rubygems