module ViewModel::ActiveRecord::Cache::CacheableView
def after_deserialize(deserialize_context:, changes:)
Clear the cache if the view or its nested children were changed during
def after_deserialize(deserialize_context:, changes:) super if defined?(super) if !changes.new? && changes.changed_nested_tree? CacheClearer.new(self.class.viewmodel_cache, id).add_to_transaction end end
def create_viewmodel_cache!(**opts)
def create_viewmodel_cache!(**opts) @viewmodel_cache = ViewModel::ActiveRecord::Cache.new(self, **opts) end
def serialize_from_cache(views, migration_versions: {}, locked: false, serialize_context:)
def serialize_from_cache(views, migration_versions: {}, locked: false, serialize_context:) plural = views.is_a?(Array) views = Array.wrap(views) json_views, json_refs = viewmodel_cache.fetch_by_viewmodel(views, locked: locked, migration_versions: migration_versions, serialize_context: serialize_context) json_views = json_views.first unless plural return json_views, json_refs end
def viewmodel_cache
def viewmodel_cache @viewmodel_cache end