我正在使用acts_as_tenant gem 来管理多租户,并且正在使用设计来管理用户。
我只为租户设置了设计用户模型和帐户模型。我可以针对多个租户创建用户——这一切都很好,除了当我尝试针对不同的租户 ID 使用相同的电子邮件创建两个用户时,我得到一个 uniqeness 错误。我正在使用所描述的 validates_uniqueness_to_tenant 选项。
用户模型
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
账户模式
class Account < ActiveRecord::Base
attr_accessible :name
end
应用控制器
class ApplicationController < ActionController::Base
set_current_tenant_by_subdomain(:account, :subdomain)
protect_from_forgery
end
这看起来应该基于acts_as_tenant中的所有文档工作,我是否需要在设计级别覆盖某些东西?
编辑:经过一番摸索和休息后,我相信问题是因为默认情况下,Devise 已向电子邮件列添加了唯一索引。这显然与acts_as_tenant 想要做的事情不符......我将尝试删除索引并查看Devise 是否呕吐。
编辑2:好的,现在已经正式放弃了。我对主站点进行了手动身份验证,并且可以与acts_as_tenant 一起正常工作。我只能假设acts_as_tenant 和Devise 在某个层次之间存在一些不兼容——在这个阶段我无法找到它。