* Reset status cache when status_stat or media_attachment updates
Fix #8711
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 #8185, 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
"#{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
bitrate: movie.bitrate,
}
end
+
+ def reset_parent_cache
+ return if status_id.nil?
+ Rails.cache.delete("statuses/#{status_id}")
+ end
end
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
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