Mandantenfähige Architektur mit PostgreSQL-Schemata

In der Multi-Tenant-Architektur werden mit einer einzigen Instanz mehrere Konten bedient. Jedes Konto wird als Mandant bezeichnet. Es gibt so viele verschiedene Ansätze, um eine mandantenfähige Architektur zu implementieren, sei es auf herkömmliche Weise oder durch die Verwendung von Gems. Durch den Vergleich all dieser Ansätze habe ich den einfachsten Weg gefunden, Multi-Tenancy zu implementieren, nämlich mit dem Gem "Act as tenant". Darstellung des Gems
gem 'acts_as_tenant'
Nachdem Sie dies in Ihrer gem-Datei platziert haben, führen Sie bundle aus, um es zu installieren. Verwendung: Es setzt den aktuellen Tenant durch die Verwendung von Subdomain und fügt die Fähigkeit, Umfang Modelle zu einem Mieter. Zum Einstellen des aktuellen Tenants fügen Sie den folgenden Code in Ihren Anwendungscontroller ein Erstellen eines Tenant Account Models
Klasse AddcolumnsToAccounts < ActiveRecord::Migration
def up
add_column :accounts, :sub_domain, :string
end
end
set_current_tenant_by_subdomain(:account, :subdomain) Manuelles Vorgehen zum Einstellen des aktuellen Mieters
Klasse ApplicationController < ActionController::Base
set_aktueller_mieter_durch_filter
before_filter :find_the_current_tenant

def find_the_current_tenant
current_account = Account.find_by_subdomain(subdomain: 'subdomain')
set_aktueller_Mieter(aktuelles_Konto)
end
end
Scoping Ihrer Modelle
Klasse AddAccountToColleges < ActiveRecord::Migration
def up
add_column :colleges, :account_id, :integer
add_index :hochschulen, :konto_id
end
end

Klasse Hochschule < ActiveRecord::Base
acts_as_tenant(:account)
end
Acts as tenant fügt eine Methode zur Überprüfung der Einzigartigkeit hinzu, validates_uniqueness_to_tenant Wenn Sie die Einzigartigkeit überprüfen müssen, können Sie den folgenden Code verwenden:
validiert_Einzigartigkeit_zum_Mieter :Titel
Darüber hinaus sind auch Standardschienen validates_uniqueness_of verfügbar. Für die Angabe von Fremdschlüsseln verwenden Sie die folgende Syntax
acts_as_tenant(:account, :foreign_key => 'AccountID')
standardmäßig nimmt es account_id Aufbau Zur Steuerung von Optionen in ActsAsTenant kann ein Initializer erstellt werden. Sie können die Konfigurationsoptionen in config/initializers/acts_as_tenant.rb ändern
ActsAsTenant.configure do |config|
config.require_tenant = false
end
Wenn config.require_tenant auf true gesetzt ist, wird ein ActsAsTenant::NoTenant-Fehler ausgelöst, wenn eine Abfrage ohne einen gesetzten Tenant durchgeführt wird.
Quelle: https://github.com/ErwinM/acts_as_tenant
 

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman