diff --git a/lib/devise/models/confirmable.rb b/lib/devise/models/confirmable.rb index 4a1ebc0d..df774213 100644 --- a/lib/devise/models/confirmable.rb +++ b/lib/devise/models/confirmable.rb @@ -63,7 +63,7 @@ module Devise # is already confirmed, it should never be blocked. Otherwise we need to # calculate if the confirm time has not expired for this user. def active? - super && (confirmed? || confirmation_period_valid?) + super && (!confirmation_required? || confirmed? || confirmation_period_valid?) end # The message to be shown if the account is inactive. diff --git a/test/models/confirmable_test.rb b/test/models/confirmable_test.rb index 27243a2d..94f8e618 100644 --- a/test/models/confirmable_test.rb +++ b/test/models/confirmable_test.rb @@ -202,4 +202,12 @@ class ConfirmableTest < ActiveSupport::TestCase user.save assert_not user.reload.active? end + + test 'should be active without confirmation when confirmation is not required' do + user = create_user + user.instance_eval { def confirmation_required?; false end } + user.confirmation_sent_at = nil + user.save + assert user.reload.active? + end end