7
votes

Unicité des utilisateurs avec Devise et ACTS_AS_TENANT dans les rails 3

J'utilise le ACTS_AS_TENANT GEM pour gérer la multi-location et j'utilise le concept pour gérer les utilisateurs.

Je n'ai que configurer le modèle de modèle d'utilisateur et modèle de compte pour les locataires. Je peux créer des utilisateurs contre plusieurs locataires - tout cela fonctionne bien, sauf lorsque j'essaie de créer deux utilisateurs avec le même courrier électronique contre différents identifiants de locataire, je reçois une erreur d'uniqeness. J'utilise l'option Validates_uniqueness_to_Tenant comme décrit. P>

Modèle utilisateur P>

class ApplicationController < ActionController::Base
  set_current_tenant_by_subdomain(:account, :subdomain)
  protect_from_forgery
end


0 commentaires

4 Réponses :


0
votes

Je ne l'ai pas testé, mais je me demande si vous changez que la commande pourrait aider ACTS_AS_TENANT faire son truc avant le début du congé. XXX


1 commentaires

On dirait que vous êtes sur quelque chose avec l'indice du déviser. Si c'est une aide, dans mes systèmes, je permet aux utilisateurs de se lier à plusieurs locataires, puis de leur donner la possibilité de changer leur locataire actuel. Cela peut ne pas fonctionner pour vos besoins particuliers.



9
votes

Le seul moyen de le faire consiste à supprimer le module validable du concevoir et à exécuter vos propres validations comme: xxx


2 commentaires

Bonne réponse - Vaut la peine de noter que quiconque ne vous souvenez pas de supprimer l'index unique sur l'e-mail que Devise ajoute également.


FYI: AAT fournit un validateur scopé: validateate_uniqueness_to_tenant: email . De plus, le format de messagerie peut facilement être effectué à l'aide de validates_format_of: email, avec: devise.email_regexp



0
votes

vient de tomber sur cette question. La solution de Sweam est plutôt bonne.

Mais je préfère ne pas remplacer le comportement par défaut. Je suis donc proposé de cette solution: xxx

Nous supprimons l'erreur de validation par défaut pour le courrier électronique, en ignorant ainsi la vérification de validation, et nous faisons notre propre validation. Ce que j'ai ajouté est à partir du module validable, mais j'ai ajouté : la portée .

Son important pour garder la commande. Ajoutez le code ci-dessus après la commande Devise .


0 commentaires

0
votes

Je l'ai résolu comme:

Valider: supprimer_old_uniquess_email_error xxx


0 commentaires