class OrbitObserver < Mongoid::Observer models_to_cache = OrbitApp.get_models_for_caching observe models_to_cache.keys def after_save(document) clear_cache(document) end def after_destroy(document) clear_cache(document) end def clear_cache(document) model_module_hash = OrbitApp.get_model_hash_for_caching case document.class.to_s when 'Tag' document.module_app.each do |module_app| Rails.cache.delete_matched( /#{ module_app.key }/ ) end when 'Category' Rails.cache.delete_matched( /#{ document.module_app.key }/ ) else Rails.cache.delete_matched( /#{model_module_hash[document.class.name.underscore.to_sym]}/ ) end end end