diff options
author | Toon Claes <toon@gitlab.com> | 2017-05-05 09:29:03 +0200 |
---|---|---|
committer | Toon Claes <toon@gitlab.com> | 2017-05-08 08:48:38 +0200 |
commit | 3531ea096f730b8533df259ac2f6cbed738965ed (patch) | |
tree | d484c6e4a6af89282bf9e70fae235ed5fb0f13a5 /app/models/user.rb | |
parent | 6a915d6f2d462a376d8cecc062dd58e520339b5e (diff) | |
download | gitlab-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.rb | 9 |
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 |