summaryrefslogtreecommitdiff
path: root/app/models/user.rb
diff options
context:
space:
mode:
authorToon Claes <toon@gitlab.com>2017-05-05 09:29:03 +0200
committerToon Claes <toon@gitlab.com>2017-05-08 08:48:38 +0200
commit3531ea096f730b8533df259ac2f6cbed738965ed (patch)
treed484c6e4a6af89282bf9e70fae235ed5fb0f13a5 /app/models/user.rb
parent6a915d6f2d462a376d8cecc062dd58e520339b5e (diff)
downloadgitlab-ce-tc-cache-trackable-attributes.tar.gz
Devise can assign trackable fields, but only allow writes once/hourtc-cache-trackable-attributes
Not assigning the trackable fields seems to cause strange side-effects.
Diffstat (limited to 'app/models/user.rb')
-rw-r--r--app/models/user.rb9
1 files changed, 5 insertions, 4 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 05f636c020a..0b358fd4b19 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -40,14 +40,15 @@ class User < ActiveRecord::Base
devise :lockable, :recoverable, :rememberable, :trackable,
:validatable, :omniauthable, :confirmable, :registerable
- # Limit trackable fields to update at most once every hour
- alias_method :devise_update_tracked_fields!, :update_tracked_fields!
-
+ # Override Devise::Models::Trackable#update_tracked_fields!
+ # to limit database writes to at most once every hour
def update_tracked_fields!(request)
+ update_tracked_fields(request)
+
lease = Gitlab::ExclusiveLease.new("user_update_tracked_fields:#{id}", timeout: 1.hour.to_i)
return unless lease.try_obtain
- devise_update_tracked_fields!(request)
+ save(validate: false)
end
attr_accessor :force_random_password