Ruby on rails 3 Rails 3-每个用户的唯一子域和登录

Ruby on rails 3 Rails 3-每个用户的唯一子域和登录,ruby-on-rails-3,devise,Ruby On Rails 3,Devise,我试图理解我需要的模型和关系,以便让用户注册和选择子域。我在考虑使用design作为身份验证系统的Account模型和User模型。由于用户属于帐户,并且帐户有许多用户 不确定这是否是实现我想要的功能的最佳模式,但鉴于我所写的内容,我很难理解如何使电子邮件在子域中唯一,并且只允许在子域中登录。管理员将能够邀请其他用户访问他的帐户 有更好的方法吗 谢谢 Donald大部分工作可以在routes中完成。rb: module AppName class UserSubdomainConstra

我试图理解我需要的模型和关系,以便让用户注册和选择子域。我在考虑使用
design
作为身份验证系统的
Account
模型和
User
模型。由于用户
属于
帐户
,并且
帐户
有许多
用户

不确定这是否是实现我想要的功能的最佳模式,但鉴于我所写的内容,我很难理解如何使电子邮件在子域中唯一,并且只允许在子域中登录。
管理员将能够邀请其他用户访问他的帐户

有更好的方法吗

谢谢
Donald

大部分工作可以在routes中完成。rb:

module AppName
    class UserSubdomainConstraint
        def self.matches?( request )
            request.subdomain.present? && request.subdomain != 'www'
        end
    end
end

AppName::Application.routes.draw do
    devise_for :users

    # THESE ARE THE ROUTES FOR YOUR MAIN SITE

    constraints( AppName::UserSubdomainConstraint ) do
        # THESE ARE THE ROUTES FOR USERS' SUBDOMAINS
    end
end
然后,您可以使用控制器中的request.subdomain来识别用户:

def index
    @user_account = User.where( :subdomain => request.subdomain ).account
end

设计登录将是所有子域的全局登录,对吗?因此,您可以像对待任何其他应用程序一样对待它们。

每个用户只能登录自己的子域,但可以添加到多个子域。同一封电子邮件可以注册多个子域。实际上,您不需要用户登录单个子域。。。您只需要允许访问属于该用户的子域?他可以访问不同的子域您可以始终添加到self.matches条件:
&¤t\u user&¤t\u user.subdomains.where(:name=>request.subdomain)。任何?
则用户将被授予仅访问其自己子域的权限,而且整个站点的登录都是全局的(而且简单)。我想你可能把这个问题弄得比实际需要的更复杂了