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

时间:2011-08-31 21:25:51

标签: ruby-on-rails-3 devise

我正在尝试理解我需要拥有的模型和关系,以便让用户注册并选择子域。我正在考虑使用Account模型和使用User作为身份验证系统的Devise模型。将用户belongs改为AccountAccount has_many Users

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

有更好的方法吗?

由于 唐纳德

1 个答案:

答案 0 :(得分:0)

大多数工作都可以在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

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