diff --git a/lib/devise/models/authenticatable.rb b/lib/devise/models/authenticatable.rb index 2097e7b1..e927603b 100644 --- a/lib/devise/models/authenticatable.rb +++ b/lib/devise/models/authenticatable.rb @@ -63,7 +63,7 @@ module Devise module ClassMethods # Authenticate a user based on configured attribute keys. Returns the # authenticated user if it's valid or nil. Attributes are by default - # :email and :password, the latter is always required. + # :email and :password, but the latter is always required. def authenticate(attributes={}) return unless authentication_keys.all? { |k| attributes[k].present? } conditions = attributes.slice(*authentication_keys) diff --git a/lib/devise/models/validatable.rb b/lib/devise/models/validatable.rb index 5745b0bb..391dd4a1 100644 --- a/lib/devise/models/validatable.rb +++ b/lib/devise/models/validatable.rb @@ -18,12 +18,10 @@ module Devise assert_validations_api!(base) base.class_eval do - attribute = authentication_keys.first - - validates_presence_of attribute - validates_uniqueness_of attribute, :allow_blank => true - validates_format_of attribute, :with => EMAIL_REGEX, :allow_blank => true, - :scope => authentication_keys[1..-1] + validates_presence_of :email + validates_uniqueness_of :email, :allow_blank => true + validates_format_of :email, :with => EMAIL_REGEX, :allow_blank => true, + :scope => authentication_keys[1..-1] with_options :if => :password_required? do |v| v.validates_presence_of :password