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