Merge pull request #1052 from Thibaut/email-validation
Don't validate email format and uniqueness unless it's changed
This commit is contained in:
commit
69126a31db
|
@ -23,8 +23,8 @@ module Devise
|
||||||
|
|
||||||
base.class_eval do
|
base.class_eval do
|
||||||
validates_presence_of :email, :if => :email_required?
|
validates_presence_of :email, :if => :email_required?
|
||||||
validates_uniqueness_of :email, :case_sensitive => (case_insensitive_keys != false), :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
|
validates_format_of :email, :with => email_regexp, :allow_blank => true, :if => :email_changed?
|
||||||
|
|
||||||
validates_presence_of :password, :if => :password_required?
|
validates_presence_of :password, :if => :password_required?
|
||||||
validates_confirmation_of :password, :if => :password_required?
|
validates_confirmation_of :password, :if => :password_required?
|
||||||
|
|
|
@ -8,7 +8,7 @@ class ValidatableTest < ActiveSupport::TestCase
|
||||||
assert_equal 'can\'t be blank', user.errors[:email].join
|
assert_equal 'can\'t be blank', user.errors[:email].join
|
||||||
end
|
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
|
existing_user = create_user
|
||||||
|
|
||||||
user = new_user(:email => '')
|
user = new_user(:email => '')
|
||||||
|
@ -18,9 +18,12 @@ class ValidatableTest < ActiveSupport::TestCase
|
||||||
user.email = existing_user.email
|
user.email = existing_user.email
|
||||||
assert user.invalid?
|
assert user.invalid?
|
||||||
assert_match(/taken/, user.errors[:email].join)
|
assert_match(/taken/, user.errors[:email].join)
|
||||||
|
|
||||||
|
user.save(:validate => false)
|
||||||
|
assert user.valid?
|
||||||
end
|
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 => '')
|
user = new_user(:email => '')
|
||||||
assert user.invalid?
|
assert user.invalid?
|
||||||
assert_not_equal 'is invalid', user.errors[:email].join
|
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 user.invalid?, 'should be invalid with email ' << email
|
||||||
assert_equal 'is invalid', user.errors[:email].join
|
assert_equal 'is invalid', user.errors[:email].join
|
||||||
end
|
end
|
||||||
|
|
||||||
|
user.save(:validate => false)
|
||||||
|
assert user.valid?
|
||||||
end
|
end
|
||||||
|
|
||||||
test 'should accept valid emails' do
|
test 'should accept valid emails' do
|
||||||
|
|
Loading…
Reference in New Issue