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
module CountMethods
concerning :CountMethods do
def wiki_page_version_count
wiki_page_versions.count
end
@@ -599,6 +599,22 @@ class User < ApplicationRecord
)
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
module SearchMethods
@@ -662,7 +678,6 @@ class User < ApplicationRecord
include EmailMethods
include ForumMethods
include ApiMethods
include CountMethods
extend SearchMethods
def initialize_attributes