Skip to content

Instantly share code, notes, and snippets.

@brianjlandau
Last active November 16, 2019 01:23
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save brianjlandau/da0bab27dcf1d8691f6e to your computer and use it in GitHub Desktop.
Save brianjlandau/da0bab27dcf1d8691f6e to your computer and use it in GitHub Desktop.
Email validator based on DNS
require 'resolv'
class EmailValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
if Resolv::DNS.new.getresources(value.split("@").last, Resolv::DNS::Resource::IN::MX).empty?
record.errors[attribute] << (options[:message] || "does not have a valid domain")
end
rescue Resolv::ResolvError, Resolv::ResolvTimeout
record.errors[attribute] << (options[:message] || "does not have a valid domain")
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment