44 lines
1.2 KiB
Ruby
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
|