Class: Aven::Workspace
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Aven::Workspace
- Extended by:
- FriendlyId
- Defined in:
- app/models/aven/workspace.rb
Class Method Summary collapse
-
.register_tenant_model(model_class) ⇒ Object
Register a model class as workspace-scoped Called automatically when a model includes Aven::TenantModel.
-
.tenant_model_names ⇒ Object
Get all registered tenant model class names.
-
.tenant_models ⇒ Object
Returns array of all registered tenant model classes.
Instance Method Summary collapse
-
#destroy_tenant_data ⇒ Object
Destroy all tenant data for this workspace.
-
#find_tenant_record(model_name, record_id) ⇒ Object
Find a tenant record by type and ID.
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_names ⇒ Object
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_models ⇒ Object
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_data ⇒ Object
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 |