Arquitectura multi-tenant con esquemas PostgreSQL

En la arquitectura multiarrendatario, una única instancia sirve a varias cuentas. Cada cuenta se denomina inquilino. Hay tantos enfoques diferentes para implementar la arquitectura multi-tenancy utilizando tradicional o mediante el uso de cualquier gemas. Al comparar todos los que he encontrado la forma más sencilla de aplicar multi-tenancy que es con "Act as tenant" gema Representación de la gema
gem 'acts_as_tenant'
Después de colocar esto en su archivo gem ejecute bundle para instalarlo. Uso: Establece el inquilino actual mediante el subdominio y añade la capacidad de alcance de los modelos a un inquilino. Para establecer el inquilino actual coloque el siguiente código en el controlador de su aplicación Creación de un modelo de cuenta de inquilino
class AñadirColumnasA Cuentas < ActiveRecord::Migration
def subir
add_column :cuentas, :subdominio, :cadena
end
end
set_current_tenant_by_subdomain(:cuenta, :subdominio) Enfoque manual para fijar el inquilino actual
clase ApplicationController < ActionController::Base
set_current_tenant_through_filter
before_filter :encontrar_el_inquilino_actual

def encontrar_el_inquilino_actual
cuenta_actual = Cuenta.buscar_por_subdominio(subdominio: 'subdominio')
set_current_tenant(cuenta_actual)
fin
fin
Determinación del alcance de los modelos
class AddAccountToColleges < ActiveRecord::Migration
def subir
add_column :universidades, :account_id, :entero
add_index :colegios, :account_id
end
end

clase Colegio < ActiveRecord::Base
acts_as_tenant(:cuenta)
end
Acts as tenant añade un método para validar la unicidad, validates_uniqueness_to_tenant Si necesitas validar la unicidad, puedes hacerlo utilizando el siguiente código:
validates_uniqueness_to_tenant :title
Además, también están disponibles los carriles por defecto validates_uniqueness_of. Para especificar la clave externa utilice la siguiente sintaxis
acts_as_tenant(:cuenta, :foreign_key => 'AccountID')
por defecto toma account_id Configuración Se puede crear un inicializador para controlar la opción en ActsAsTenant. Puede cambiar las opciones de configuración en config/initializers/acts_as_tenant.rb
ActsAsTenant.configure do |config|
config.require_tenant = false
end
config.require_tenant cuando se establece en true lanzará un error ActsAsTenant::NoTenant siempre que se realice una consulta sin un tenant establecido.
Fuente : https://github.com/ErwinM/acts_as_tenant
 

Suscríbete para recibir las últimas actualizaciones

Artículos Relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESSpanish