Browse Source

Fix `TagFollow` records not being correctly handled in account operations (#33063)

pull/1368/head
Claire 1 year ago
parent
commit
fd431c0afb
  1. 3
      app/models/concerns/account_interactions.rb
  2. 2
      app/models/concerns/account_merging.rb
  3. 1
      app/services/delete_account_service.rb
  4. 2
      lib/mastodon/cli/maintenance.rb

3
app/models/concerns/account_interactions.rb

@ -83,6 +83,9 @@ module AccountInteractions
has_many :following, -> { order('follows.id desc') }, through: :active_relationships, source: :target_account
has_many :followers, -> { order('follows.id desc') }, through: :passive_relationships, source: :account
# Hashtag follows
has_many :tag_follows, inverse_of: :account, dependent: :destroy
# Account notes
has_many :account_notes, dependent: :destroy

2
app/models/concerns/account_merging.rb

@ -16,7 +16,7 @@ module AccountMerging
Follow, FollowRequest, Block, Mute,
AccountModerationNote, AccountPin, AccountStat, ListAccount,
PollVote, Mention, AccountDeletionRequest, AccountNote, FollowRecommendationSuppression,
Appeal
Appeal, TagFollow
]
owned_classes.each do |klass|

1
app/services/delete_account_service.rb

@ -52,6 +52,7 @@ class DeleteAccountService < BaseService
owned_lists
scheduled_statuses
status_pins
tag_follows
)
ASSOCIATIONS_ON_DESTROY = %w(

2
lib/mastodon/cli/maintenance.rb

@ -39,6 +39,7 @@ module Mastodon::CLI
class Webhook < ApplicationRecord; end
class BulkImport < ApplicationRecord; end
class SoftwareUpdate < ApplicationRecord; end
class TagFollow < ApplicationRecord; end
class PreviewCard < ApplicationRecord
self.inheritance_column = false
@ -89,6 +90,7 @@ module Mastodon::CLI
owned_classes << AccountIdentityProof if ActiveRecord::Base.connection.table_exists?(:account_identity_proofs)
owned_classes << Appeal if ActiveRecord::Base.connection.table_exists?(:appeals)
owned_classes << BulkImport if ActiveRecord::Base.connection.table_exists?(:bulk_imports)
owned_classes << TagFollow if ActiveRecord::Base.connection.table_exists?(:tag_follows)
owned_classes.each do |klass|
klass.where(account_id: other_account.id).find_each do |record|

Loading…
Cancel
Save