【发布时间】:2012-07-18 10:03:36
【问题描述】:
我正在使用acts_as_tenant gem 来管理多租户,并且我正在使用 devise 来管理用户。
我只为租户设置了设计用户模型和帐户模型。 我可以针对多个租户创建用户——这一切都很好,除了当我尝试针对不同的租户 ID 创建两个具有相同电子邮件的用户时,我得到一个唯一性错误。 我正在使用描述的 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 在某个层之间存在一些不兼容——在这个阶段我无法找到它。
【问题讨论】:
标签: ruby-on-rails-3 devise multi-tenant