canvas-lms/app/observers/cacher.rb

44 lines
1.2 KiB
Ruby

class Cacher < ActiveRecord::Observer
observe :user, :account_user
def self.avatar_cache_key(user_id, account_avatar_setting)
['avatar_img', user_id, account_avatar_setting].cache_key
end
def self.inline_avatar_cache_key(user_id, account_avatar_setting)
['inline_avatar_img', user_id, account_avatar_setting].cache_key
end
def after_update(obj)
case obj
when User
if obj.avatar_image_url_changed? ||
obj.avatar_image_source_changed? ||
obj.avatar_state_changed?
User::AVATAR_SETTINGS.each do |avatar_setting|
Rails.cache.delete(Cacher.avatar_cache_key(obj.id, avatar_setting))
Rails.cache.delete(Cacher.inline_avatar_cache_key(obj.id, avatar_setting))
end
end
end
end
def after_save(obj)
case obj
when AccountUser
if obj.account_id == Account.site_admin.id
Shard.default.activate { Rails.cache.delete('all_site_admin_account_users') }
end
end
end
def after_destroy(obj)
case obj
when AccountUser
if obj.account_id == Account.site_admin.id
Shard.default.activate { Rails.cache.delete('all_site_admin_account_users') }
end
end
end
end