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

Instance Method Details

#workspace_association_nameObject

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

Returns:

  • (Boolean)


51
52
53
# File 'lib/aven/model/tenant_model.rb', line 51

def workspace_scoped?
  true
end

#workspace_tenant_idObject

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