Fix #4265: Negative favorite counts.

There were 2176 users with incorrect favorite counts, and it stopped
after user id 522393, so this must have been an old bug.
This commit is contained in:
evazion
2022-01-08 13:42:49 -06:00
parent d900e15dcc
commit 69facb22b1

View File

@@ -540,7 +540,7 @@ class User < ApplicationRecord
end end
end end
module CountMethods concerning :CountMethods do
def wiki_page_version_count def wiki_page_version_count
wiki_page_versions.count wiki_page_versions.count
end end
@@ -599,6 +599,22 @@ class User < ApplicationRecord
) )
end end
end end
class_methods do
def fix_favorite_counts!
User.find_by_sql(<<~SQL.squish)
UPDATE users
SET favorite_count = true_count
FROM (
SELECT user_id, COUNT(*) AS true_count
FROM favorites
GROUP BY user_id
) true_counts
WHERE users.id = user_id AND users.favorite_count != true_count
RETURNING users.*
SQL
end
end
end end
module SearchMethods module SearchMethods
@@ -662,7 +678,6 @@ class User < ApplicationRecord
include EmailMethods include EmailMethods
include ForumMethods include ForumMethods
include ApiMethods include ApiMethods
include CountMethods
extend SearchMethods extend SearchMethods
def initialize_attributes def initialize_attributes