Class: Aven::Workspace

Inherits:
ApplicationRecord show all
Extended by:
FriendlyId
Defined in:
app/models/aven/workspace.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.register_tenant_model(model_class) ⇒ Object

Register a model class as workspace-scoped Called automatically when a model includes Aven::TenantModel



42
43
44
45
46
47
# File 'app/models/aven/workspace.rb', line 42

def register_tenant_model(model_class)
  return if tenant_models.include?(model_class)

  tenant_models << model_class
  define_tenant_association(model_class)
end

.tenant_model_namesObject

Get all registered tenant model class names



50
51
52
# File 'app/models/aven/workspace.rb', line 50

def tenant_model_names
  tenant_models.map(&:name)
end

.tenant_modelsObject

Returns array of all registered tenant model classes



36
37
38
# File 'app/models/aven/workspace.rb', line 36

def tenant_models
  @tenant_models ||= []
end

Instance Method Details

#destroy_tenant_dataObject

Destroy all tenant data for this workspace



77
78
79
80
81
# File 'app/models/aven/workspace.rb', line 77

def destroy_tenant_data
  self.class.tenant_models.each do |model_class|
    model_class.where(workspace_id: id).destroy_all
  end
end

#find_tenant_record(model_name, record_id) ⇒ Object

Find a tenant record by type and ID



69
70
71
72
73
74
# File 'app/models/aven/workspace.rb', line 69

def find_tenant_record(model_name, record_id)
  model_class = self.class.tenant_models.find { |m| m.name == model_name }
  return nil unless model_class

  model_class.where(workspace_id: id).find(record_id)
end