Module: Aven::Model::TenantModel
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/aven/model/tenant_model.rb
Overview
TenantModel provides workspace multi-tenancy support for ActiveRecord models.
Usage:
class Server < ApplicationRecord
include Aven::TenantModel
end
This will:
-
Add belongs_to :workspace association
-
Validate workspace_id column exists
-
Register model with Aven::Workspace
-
Add workspace scoping helpers
Inspired by Flipper’s Model::ActiveRecord pattern.
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#workspace_association_name ⇒ Object
Returns workspace association name for this model type.
-
#workspace_scoped? ⇒ Boolean
Check if this model is workspace-scoped.
-
#workspace_tenant_id ⇒ Object
Returns a unique identifier combining class name and workspace_id Useful for caching keys, logging, permissions, etc.
Instance Method Details
#workspace_association_name ⇒ Object
Returns workspace association name for this model type
56 57 58 |
# File 'lib/aven/model/tenant_model.rb', line 56 def workspace_association_name self.class.workspace_association_name end |
#workspace_scoped? ⇒ Boolean
Check if this model is workspace-scoped
51 52 53 |
# File 'lib/aven/model/tenant_model.rb', line 51 def workspace_scoped? true end |
#workspace_tenant_id ⇒ Object
Returns a unique identifier combining class name and workspace_id Useful for caching keys, logging, permissions, etc.
Example:
server.workspace_tenant_id #=> "Server;123"
46 47 48 |
# File 'lib/aven/model/tenant_model.rb', line 46 def workspace_tenant_id "#{self.class.base_class.name};#{workspace_id}" end |