about summary refs log tree commit diff
path: root/app/models/account_stat.rb
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2020-11-12 22:57:57 +0100
committerGitHub <noreply@github.com>2020-11-12 22:57:57 +0100
commit3b6e27978d5d8851845c5c15bbe8162b998f59d3 (patch)
treea543d3e1de1f4f87607e7bd99630433dc0160e59 /app/models/account_stat.rb
parent67125534bc0fd48a45d6cb17a5c78712d8e87150 (diff)
parent3f09d4ca034bc51b66b86bae7a10a41f02a4964f (diff)
Merge pull request #1457 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/models/account_stat.rb')
-rw-r--r--app/models/account_stat.rb25
1 files changed, 15 insertions, 10 deletions
diff --git a/app/models/account_stat.rb b/app/models/account_stat.rb
index c84e4217c..e70b54d79 100644
--- a/app/models/account_stat.rb
+++ b/app/models/account_stat.rb
@@ -21,26 +21,26 @@ class AccountStat < ApplicationRecord
 
   def increment_count!(key)
     update(attributes_for_increment(key))
-  rescue ActiveRecord::StaleObjectError
+  rescue ActiveRecord::StaleObjectError, ActiveRecord::RecordNotUnique
     begin
       reload_with_id
     rescue ActiveRecord::RecordNotFound
-      # Nothing to do
-    else
-      retry
+      return
     end
+
+    retry
   end
 
   def decrement_count!(key)
-    update(key => [public_send(key) - 1, 0].max)
-  rescue ActiveRecord::StaleObjectError
+    update(attributes_for_decrement(key))
+  rescue ActiveRecord::StaleObjectError, ActiveRecord::RecordNotUnique
     begin
       reload_with_id
     rescue ActiveRecord::RecordNotFound
-      # Nothing to do
-    else
-      retry
+      return
     end
+
+    retry
   end
 
   private
@@ -51,8 +51,13 @@ class AccountStat < ApplicationRecord
     attrs
   end
 
+  def attributes_for_decrement(key)
+    attrs = { key => [public_send(key) - 1, 0].max }
+    attrs
+  end
+
   def reload_with_id
-    self.id = find_by!(account: account).id if new_record?
+    self.id = self.class.find_by!(account: account).id if new_record?
     reload
   end
 end