2011-08-31 53 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