diff options
author | ThibG <thib@sitedethib.com> | 2020-11-12 22:57:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-12 22:57:57 +0100 |
commit | 3b6e27978d5d8851845c5c15bbe8162b998f59d3 (patch) | |
tree | a543d3e1de1f4f87607e7bd99630433dc0160e59 /app/models/account_stat.rb | |
parent | 67125534bc0fd48a45d6cb17a5c78712d8e87150 (diff) | |
parent | 3f09d4ca034bc51b66b86bae7a10a41f02a4964f (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.rb | 25 |
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 |