Dans l'architecture multi-tenant, utilisant une seule instance, il dessert plusieurs comptes. Chaque compte est appelé locataire. Il existe de nombreuses approches différentes pour mettre en œuvre une architecture multi-tenant en utilisant des méthodes traditionnelles ou en utilisant n'importe quelle gemme. En comparant tous ceux-ci, j'ai trouvé le moyen le plus simple d'implémenter la multi-location, à savoir avec la gem « Agir en tant que locataire ». Représentation de la gemme
gemme 'acts_as_tenant'
Après l'avoir placé dans votre fichier gem, exécutez le bundle pour l'installer.
Usage:
Il définit le locataire actuel à l'aide d'un sous-domaine et ajoute la possibilité d'étendre les modèles à un locataire. Pour définir le locataire actuel, placez le code ci-dessous dans votre contrôleur d'application Création d'un modèle de compte de locataire
class AddcolumnsToAccounts < ActiveRecord::Migration def up add_column :accounts, :sub_domain, :string end end
set_current_tenant_by_subdomain(:account, :subdomain)
Approche manuelle pour définir le locataire actuel
class ApplicationController < ActionController::Base set_current_tenant_through_filter before_filter :find_the_current_tenant def find_the_current_tenant current_account = Account.find_by_subdomain(sous-domaine : 'sous-domaine') set_current_tenant(current_account) end end
Cadrage de vos modèles
class AddAccountToColleges < ActiveRecord::Migration def up add_column :colleges, :account_id, :integer add_index :colleges, :account_id end end class College < ActiveRecord::Base actes_as_tenant(:account) end
Agit en tant que locataire et ajoute une méthode pour valider l'unicité, validates_uniqueness_to_tenant. Si vous devez valider l'unicité, vous pouvez le faire en utilisant le code suivant :
validates_uniqueness_to_tenant : titre
Et plus encore, les rails par défaut validates_uniqueness_of sont également disponibles. Pour spécifier une clé étrangère, utilisez la syntaxe suivante
actes_as_tenant(:account, :foreign_key => 'AccountID')
par défaut, il prend account_id
Configuration
Un initialiseur peut être créé pour contrôler l’option dans ActsAsTenant. Vous pouvez modifier les options de configuration dans config/initializers/acts_as_tenant.rb
ActsAsTenant.configure faire |config| config.require_tenant = fausse fin
config.require_tenant, lorsqu'il est défini sur true, déclenchera une erreur ActsAsTenant::NoTenant chaque fois qu'une requête est effectuée sans ensemble de locataires.
Source : https://github.com/ErwinM/acts_as_tenant
Abonnez-vous pour les dernières mises à jour
Articles Similaires