summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/site_statistic.rb17
1 files changed, 10 insertions, 7 deletions
diff --git a/app/models/site_statistic.rb b/app/models/site_statistic.rb
index 63566bca60c..c07233c48ed 100644
--- a/app/models/site_statistic.rb
+++ b/app/models/site_statistic.rb
@@ -25,17 +25,20 @@ class SiteStatistic < ActiveRecord::Base
return unless available?
- # we have quite a lot of specs testing migrations, we need this and the rescue to not break them
- SiteStatistic.transaction(requires_new: true) do
- SiteStatistic.first_or_create
- attribute = self.connection.quote_column_name(raw_attribute)
+ self.fetch # make sure record exists
- yield(attribute)
- end
+ attribute = self.connection.quote_column_name(raw_attribute)
+
+ # will be running on its own transaction context
+ yield(attribute)
end
def self.fetch
- SiteStatistic.first_or_create!
+ SiteStatistic.transaction(requires_new: true) do
+ SiteStatistic.first_or_create!
+ end
+ rescue ActiveRecord::RecordNotUnique
+ retry
end
def self.available?