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)。任何?
则用户将被授予仅访问其自己子域的权限,而且整个站点的登录都是全局的(而且简单)。我想你可能把这个问题弄得比实际需要的更复杂了