diff --git a/app/models/user.rb b/app/models/user.rb index b0be74a26b..c1a94949a6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -903,10 +903,8 @@ class User < ActiveRecord::Base def activate if email_token = self.email_tokens.active.where(email: self.email).first user = EmailToken.confirm(email_token.token, skip_reviewable: true) - self.update!(active: true) if user.nil? - else - self.update!(active: true) end + self.update!(active: true) create_reviewable end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index b06dc815f9..cc50d88b2e 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1867,6 +1867,12 @@ describe User do expect(inactive.active).to eq(true) end + it 'works without needing to reload the model' do + inactive.activate + expect(inactive.email_confirmed?).to eq(true) + expect(inactive.active).to eq(true) + end + it 'activates user even if email token is already confirmed' do token = inactive.email_tokens.find_by(email: inactive.email) token.update_column(:confirmed, true)