Opinionated email address validation for ActiveModels/ActiveRecord
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
.travis.yml
CHANGELOG.md
Gemfile
LICENSE.txt
README.md
Rakefile
activemodel-email_address_validator.gemspec

README.md

Email Address Validator

ActiveModel-style email address format validator

Build Status Code Climate Coverage Status Dependency Status

Whenever I have wanted to validate an email address it has been because I wanted to be somewhat certain I can send an email to someone. Usually this happens as part of a signup procedure.

At this point I have pretty much one criteria:

  • Don't reject a valid email address realistically in use by a potential user. Err on the side of accepting too much.

Quite frankly, I don't care about the RFC at this point, neither does the user. I care that my users can enter their email address and get on with using my product. I appreciate it if the application catches any misspellings of their email addresses, though - this is the opportune moment for them to correct it.

Requirements

  • Should not accept local email addresses: No user ever needed to sign up using "postmaster@localhost" or "bob@1.2.3.4" even though they are perfectly valid email addresses.
  • Must work with I18n like Rails' built-in validators do. If not configured otherwise, the default translation key must be :invalid.

Usage examples

Simplest case

validates :email, :email_address => true

Bring your own regex

If you want to use a specific regular expression:

validates :email, :email_address => {:format => /.+@.+\..+/}

Verify domain (still to be done - pull request, anybody?)

This also checks that the domain actually has an MX record. Note this might take a while because of DNS lookups.

validates :email, :email_address => {:mx => true}

Installation

Add this line to your application's Gemfile:

gem 'activemodel-email_address_validator'

And then execute:

$ bundle

Or install it yourself as:

$ gem install activemodel-email_address_validator

Resources

Other libraries

Serverside

Clientside

Contributing

  1. Fork it ( https://github.com/substancelab/activemodel-email_address_validator/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request