Estoy usando la gema acts_as_tenant para administrar multi-tenancy, y estoy usando un dispositivo para administrar usuarios.Unicidad de usuarios con idear y actuadores_as_teniente en rieles 3
Solo tengo la configuración de diseño Modelo de usuario y Modelo de cuenta para inquilinos. Puedo crear usuarios contra varios inquilinos; todo funciona bien. EXCEPTO cuando intento crear dos usuarios con el mismo correo electrónico contra ID de inquilino diferente, obtengo un error de uniformidad. Estoy usando la opción validates_uniqueness_to_tenant como se describe.
modelo de usuario
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
modelo cuenta
class Account < ActiveRecord::Base
attr_accessible :name
end
Controlador de aplicación
class ApplicationController < ActionController::Base
set_current_tenant_by_subdomain(:account, :subdomain)
protect_from_forgery
end
Esta parece que debería estar trabajando basa en toda la documentación en acts_as_tenant, necesito para invalidar algo en el nivel del ingenio en su lugar?
EDITAR: Después de algunos arañazos en la cabeza y un poco de descanso, el problema es que creo que, por defecto, Devise ha agregado un índice único a la columna Correo electrónico. Esto, obviamente, no se corresponde con lo que actúa_como_gente quiere hacer ... Voy a tratar de eliminar el índice y ver si el programa vomita o no.
EDIT 2: Bien, oficialmente me he rendido de esto por ahora. Tengo una autenticación automática para el sitio principal y esto funciona correctamente con acts_as_tenant. Solo puedo suponer cierta incompatibilidad entre acts_as_tenant y Devise en alguna capa, más allá de mí para encontrarla en este momento.
Buena respuesta: vale la pena señalar para cualquier otra persona que recuerde eliminar el índice único en el correo electrónico que también crea adiciones. –
FYI: AaT proporciona un validador de ámbito: 'validates_uniqueness_to_tenant: email'. También el formato de correo electrónico se puede hacer fácilmente usando 'validates_format_of: email, con: Devise.email_regexp' – Besi