Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save thermistor/7a6ea74bd1e74ad1a79eed711f6c0c96 to your computer and use it in GitHub Desktop.
Save thermistor/7a6ea74bd1e74ad1a79eed711f6c0c96 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