FIX: When activating a user, ensure the change is reflected immediately

FIX: When activating a user, ensure the change is reflected immediately

When activating a user via an external provider, this would cause the “this account is not activated” message to show on the first attempt, even though the account had been activated correctly.

diff --git a/app/models/user.rb b/app/models/user.rb
index b0be74a..c1a9494 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 b06dc81..cc50d88 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)

GitHub sha: 2bb08d93