Skip to content

Instantly share code, notes, and snippets.

@warmwaffles
Created May 30, 2015 19:45
Show Gist options
  • Save warmwaffles/bca81eb9115da9fac933 to your computer and use it in GitHub Desktop.
Save warmwaffles/bca81eb9115da9fac933 to your computer and use it in GitHub Desktop.
require 'mail'
class EmailValidator < ActiveModel::EachValidator
def valid_email?(value)
a = Mail::Address.new(value)
if a.domain && a.address == value
elements = a.domain.split(/\./)
a.domain.match(/\A\S+\Z/) && elements.none?(&:blank?) && elements.size > 1
else
false
end
rescue Mail::FieldParseError
return false
end
def validate_each(record, attribute, value)
unless valid_email?(value)
record.errors[attribute] << (options[:message] || I18n.t('errors.messages.email.invalid'))
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment