2011-08-31 65 views
1

我想了解模型和我需要有的关系,以便让用户注册并选择一个子域。我在考虑使用Account型号和User型号,使用Devise作为认证系统。作为用户belongsAccountAccounthas_manyUsersRails 3 - 独特的子域和登录每个用户

不知道这是否是最好的模式来完成我想要的,但鉴于我写的内容,我很努力地了解如何使电子邮件唯一的子域,并只允许登录时子域。然后Admin将能够邀请其他用户访问他的帐户。

有没有更好的方法来做到这一点?

感谢 唐纳德

回答

0

大部分的工作都可以在routes.rb中做到:

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

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在控制器识别用户

设计登录将在所有子域是全球性的正确吗?所以你可以像在任何其他应用程序中那样对待它们。

+0

每个用户只能在自己的子域中登录,但他可以添加到多个子域。同一封电子邮件可以注册几个子域名。 – donald

+0

实际上,您并不需要用户登录到单个子域中......您只需要允许访问属于该用户的子域? –

+0

他可以访问不同的子域 – donald