Fix error when trying to update counters for statuses that are gone (#8251)
This commit is contained in:
parent
78fa926ed5
commit
d010816ba8
3 changed files with 29 additions and 6 deletions
|
@ -32,11 +32,11 @@ class Favourite < ApplicationRecord
|
|||
private
|
||||
|
||||
def increment_cache_counters
|
||||
status.increment_count!(:favourites_count)
|
||||
status&.increment_count!(:favourites_count)
|
||||
end
|
||||
|
||||
def decrement_cache_counters
|
||||
return if association(:status).loaded? && (status.marked_for_destruction? || status.marked_for_mass_destruction?)
|
||||
status.decrement_count!(:favourites_count)
|
||||
status&.decrement_count!(:favourites_count)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -396,6 +396,8 @@ class Status < ApplicationRecord
|
|||
private
|
||||
|
||||
def update_status_stat!(attrs)
|
||||
return if marked_for_destruction? || destroyed?
|
||||
|
||||
record = status_stat || build_status_stat
|
||||
record.update(attrs)
|
||||
end
|
||||
|
@ -456,8 +458,8 @@ class Status < ApplicationRecord
|
|||
Account.where(id: account_id).update_all('statuses_count = COALESCE(statuses_count, 0) + 1')
|
||||
end
|
||||
|
||||
reblog.increment_count!(:reblogs_count) if reblog?
|
||||
thread.increment_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
|
||||
reblog&.increment_count!(:reblogs_count) if reblog?
|
||||
thread&.increment_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
|
||||
end
|
||||
|
||||
def decrement_counter_caches
|
||||
|
@ -469,7 +471,7 @@ class Status < ApplicationRecord
|
|||
Account.where(id: account_id).update_all('statuses_count = GREATEST(COALESCE(statuses_count, 0) - 1, 0)')
|
||||
end
|
||||
|
||||
reblog.decrement_count!(:reblogs_count) if reblog?
|
||||
thread.decrement_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
|
||||
reblog&.decrement_count!(:reblogs_count) if reblog?
|
||||
thread&.decrement_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue