Używam klejnotu acts_as_tenant do zarządzania wieloma dzierżawcami i używam go do zarządzania użytkownikami.Wyjątkowość użytkowników przy użyciu narzędzi i act_as_tenant w szynach 3
Mam tylko konfigurację zaprojektować model użytkownika i model konta dla lokatorów. Potrafię tworzyć użytkowników przeciwko wielu najemcom - wszystko działa dobrze, Z WYJĄTKIEM, gdy próbuję utworzyć dwóch użytkowników z tą samą wiadomością e-mail na podstawie różnych identyfikatorów dzierżawcy, otrzymuję błąd unikalności. Używam opcji validates_uniqueness_to_tenant zgodnie z opisem.
modelu User
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
acts_as_tenant(:account)
validates_uniqueness_to_tenant :email
end
modelu Konto
class Account < ActiveRecord::Base
attr_accessible :name
end
Application Controller
class ApplicationController < ActionController::Base
set_current_tenant_by_subdomain(:account, :subdomain)
protect_from_forgery
end
To wygląda tak, jak powinno być oparte pracujących na całej dokumentacji w acts_as_tenant, muszę zastąpić zamiast tego coś na poziomie projektu?
EDYCJA: Po pewnym zarysowaniu głowy i odrobinie przerwy, problem polega na tym, że domyślnie program Devise dodał unikalny indeks do kolumny Email. To oczywiście nie żeluje z tym, co act_as_tenant chce zrobić ... Spróbuję usunąć indeks i sprawdzić, czy Devise pukes, czy nie.
EDYCJA 2: OK, oficjalnie już się na tym skończyłem. Mam ręczne uwierzytelnianie dla głównej strony i działa to poprawnie z acts_as_tenant. Mogę tylko założyć niekompatybilność pomiędzy acts_as_tenant i Devise na jakiejś warstwie - poza mną, aby ją znaleźć na tym etapie.
Dobra odpowiedź - warto zauważyć, że dla nikogo innego należy pamiętać o usunięciu unikalnego indeksu na pocztę e-mail, który również opracowuje. –
FYI: AaT udostępnia sprawdzanie poprawności zakresu: 'validates_uniqueness_to_tenant: email'. Również format e-mail można łatwo zrobić za pomocą 'validates_format_of: email, z: Devise.email_regexp' – Besi