加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 使用rails 3中的devise和acts_as_tenant的用

发布时间:2020-12-16 23:29:54 所属栏目:百科 来源:网络整理
导读:我正在使用 acts_as_tenant gem管理多租户,而我正在使用设计来管理用户. 我只为租户设置了用户模型和帐户模型. 我可以针对多个租户创建用户 – 这一切都正常工作除了当我尝试使用相同的电子邮件创建两个用户对不同的租户ID时,我得到了一个单一性错误. 我正在
我正在使用 acts_as_tenant gem管理多租户,而我正在使用设计来管理用户.

我只为租户设置了用户模型和帐户模型.
我可以针对多个租户创建用户 – 这一切都正常工作除了当我尝试使用相同的电子邮件创建两个用户对不同的租户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为电子邮件列添加了一个唯一索引.
这显然不会影响act_as_tenant想要做的事情……
我会尝试删除索引,看看Devise是否呕吐.

编辑2:好的,现在已经正式放弃了.我对主站点进行了手动滚动身份验证,这与acts_as_tenant一起正常运行.
我只能假设在某个层面上acts_as_tenant和Devise之间存在一些不兼容性 – 除了我在这个阶段找到它.

解决方法

唯一的方法是从设计中删除validatable模块并运行您自己的验证,如下所示:
class User < ActiveRecord::Base
  acts_as_tenant :account
  attr_accessible :email,:remember_me

  #remove :validatable
  devise :database_authenticatable,:trackable

  #run own validations
  #I've omitted any emailformatting checks for clarity's sake.
  validates :email,presence: true,uniqueness: { scope: :account_id,case_sensitive: false }
  validates :password,length: { :in => 6..20 },:if => :password_required?

protected
  # copied from validatable module
  def password_required?
    !persisted? || !password.nil? || !password_confirmation.nil?
  end

end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读