Reset status cache when status_stat or media_attachment updates ()

* Reset status cache when status_stat or media_attachment updates

Fix 

Media attachments are generally immutable, but admins can update
the sensitive flag, and this would ensure the change is visible
instantly. Same for updates to status stats. That is a regression
from , because even the correct updated_at fetched from a join
doesn't seem to invalidate the cache.

* Remove join from Status#cache_ids since it has no effect
This commit is contained in:
Eugen Rochko 2018-10-28 06:42:34 +01:00 committed by GitHub
parent 44e64ee534
commit c3005d09e6
3 changed files with 14 additions and 4 deletions

View file

@ -130,6 +130,7 @@ class MediaAttachment < ApplicationRecord
"#{x},#{y}"
end
after_commit :reset_parent_cache, on: :update
before_create :prepare_description, unless: :local?
before_create :set_shortcode
before_post_process :set_type_and_extension
@ -230,4 +231,9 @@ class MediaAttachment < ApplicationRecord
bitrate: movie.bitrate,
}
end
def reset_parent_cache
return if status_id.nil?
Rails.cache.delete("statuses/#{status_id}")
end
end

View file

@ -240,10 +240,6 @@ class Status < ApplicationRecord
before_validation :set_local
class << self
def cache_ids
left_outer_joins(:status_stat).select('statuses.id, greatest(statuses.updated_at, status_stats.updated_at) AS updated_at')
end
def selectable_visibilities
visibilities.keys - %w(direct limited)
end

View file

@ -14,4 +14,12 @@
class StatusStat < ApplicationRecord
belongs_to :status, inverse_of: :status_stat
after_commit :reset_parent_cache
private
def reset_parent_cache
Rails.cache.delete("statuses/#{status_id}")
end
end