diff --git a/lib/devise/models/confirmable.rb b/lib/devise/models/confirmable.rb index dbf6d0ffc8..27859c6a46 100644 --- a/lib/devise/models/confirmable.rb +++ b/lib/devise/models/confirmable.rb @@ -246,7 +246,7 @@ def pending_any_confirmation # Generates a new random token for confirmation, and stores # the time this token is being generated in confirmation_sent_at def generate_confirmation_token - if self.confirmation_token && !confirmation_period_expired? + if self.confirmation_token.present? && !confirmation_period_expired? @raw_confirmation_token = self.confirmation_token else self.confirmation_token = @raw_confirmation_token = Devise.friendly_token diff --git a/test/models/confirmable_test.rb b/test/models/confirmable_test.rb index cab1d4f387..f7232e34b3 100644 --- a/test/models/confirmable_test.rb +++ b/test/models/confirmable_test.rb @@ -33,6 +33,12 @@ def setup end end + test 'should generate a token over an empty string' do + user = create_user(confirmation_token: '') + assert_not_nil user.confirmation_token + assert_not_equal user.confirmation_token, '' + end + test 'should confirm a user by updating confirmed at' do user = create_user assert_nil user.confirmed_at