Merge pull request #1052 from Thibaut/email-validation

Don't validate email format and uniqueness unless it's changed
This commit is contained in:
José Valim 2011-05-26 05:24:45 -07:00
commit 69126a31db
2 changed files with 10 additions and 4 deletions

View File

@ -23,8 +23,8 @@ module Devise
base.class_eval do
validates_presence_of :email, :if => :email_required?
validates_uniqueness_of :email, :case_sensitive => (case_insensitive_keys != false), :allow_blank => true
validates_format_of :email, :with => email_regexp, :allow_blank => true
validates_uniqueness_of :email, :case_sensitive => (case_insensitive_keys != false), :allow_blank => true, :if => :email_changed?
validates_format_of :email, :with => email_regexp, :allow_blank => true, :if => :email_changed?
validates_presence_of :password, :if => :password_required?
validates_confirmation_of :password, :if => :password_required?

View File

@ -8,7 +8,7 @@ class ValidatableTest < ActiveSupport::TestCase
assert_equal 'can\'t be blank', user.errors[:email].join
end
test 'should require uniqueness of email, allowing blank' do
test 'should require uniqueness of email if email has changed, allowing blank' do
existing_user = create_user
user = new_user(:email => '')
@ -18,9 +18,12 @@ class ValidatableTest < ActiveSupport::TestCase
user.email = existing_user.email
assert user.invalid?
assert_match(/taken/, user.errors[:email].join)
user.save(:validate => false)
assert user.valid?
end
test 'should require correct email format, allowing blank' do
test 'should require correct email format if email has changed, allowing blank' do
user = new_user(:email => '')
assert user.invalid?
assert_not_equal 'is invalid', user.errors[:email].join
@ -30,6 +33,9 @@ class ValidatableTest < ActiveSupport::TestCase
assert user.invalid?, 'should be invalid with email ' << email
assert_equal 'is invalid', user.errors[:email].join
end
user.save(:validate => false)
assert user.valid?
end
test 'should accept valid emails' do