validates_email_format_of Rails plugin and Ruby gem
Validate e-mail addreses against RFC 2822 and RFC 3696.
Updated January 3, 2009 to work independent of Active Record courtesy of Denis Ahearn at Riverock Technologies.
Updates to plugins, gems and other code will be announced at http://twitter.com/TheCHANGELOG. Follow along so you can receive updates without having to check back. You can also subscribe to the Atom feed.
You may want to browse the source on Github.
Installation
Installing as a gem:
gem sources -a http://gems.github.com gem install alexdunae-validates_email_format_of
Installing as a Ruby on Rails plugin:
./script/plugin install http://github.com/alexdunae/validates_email_format_of.git
Options
- :message
- String. A custom error message (default is: " does not appear to be a valid e-mail address").
- :on
- Symbol. Specifies when this validation is active (default is :save, other options :create, :update).
- :allow_nil
- Boolean. Allow nil values (default is false).
- :check_mx
- Boolean. Check for a valid MX record (default is false).
- :allow_blank
- Boolean. Allow blank values (default is false).
- :if
- Specifies a method, proc or string to call to determine if the validation should occur (e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }). The method, proc or string should return or evaluate to a true or false value.
- :unless
- Just like
:if.
Usage
class Person < ActiveRecord::Base validates_email_format_of :email end
As of version 1.4, it’s possible to run e-mail validation tests (including MX checks) without using ActiveRecord or even touching a database. The validate_email_format method will return nil on a valid e-mail address or an array of error messages for invalid addresses.
results = ValidatesEmailFormatOf::validate_email_format(email, options)
if results.nil?
# success!
else
puts results.join(', ')
end
Testing
To execute the unit tests run:
rake test
The unit tests for this plugin use an in-memory sqlite3 database.
Contact
Written by Alex Dunae (dunae.ca, e-mail 'code' at the same domain), 2006-08.
Thanks to Francis Hwang at Diversion Media for creating the 1.1 update.
Thanks to Travis Sinnott for creating the 1.3 update.
Thanks to Denis Ahearn at Riverock Technologies for creating the 1.4 update.