我对Rails很新,并且正在开发一个项目,我想用devise创建一个父/子关系。我已经浏览了很多关于Devise的文献,但没有看到任何明确的方法去做我想要完成的事情(虽然我当然可能忽略了答案,因为我使用了不同的术语)。
以下是我想要做的事情:
公司使用正常设计注册流程注册一些额外信息 - 即公司名称,地址等。然后,他们会在应用程序内添加“用户”。用户不应该有外部注册流程。我希望每个用户都可以从Company
继承公司信息。
以下是我认为我会尝试的内容:
Company
和User
设计模型。User
控制器,将new
操作修改为@current_company.user.build
这会完成我想要做的事情吗?
您可能会传递的任何进一步阅读将不胜感激!
答案 0 :(得分:0)
这样做....
#app/models/company.rb
class Company < ActiveRecord::Base
has_many :users
end
#app/models/user.rb
class User < ActiveRecord::Base
devise ....
belongs_to :company
end
你应该做的是让companies
成为自己的模特;根本不包括Devise。
相反,您应该使User
模型成为唯一具有身份验证的模型。之后,每个user
都必须与特定company
相关(或者如果您想使用has_many :through
,则可以让用户成为许多公司的成员)。
您必须围绕公司(IE Devise
)确定company.users.exists? user
身份验证的范围;我一直在努力,但还没有彻底的实施。
这里有一个很好的参考:Scope login to subdomain
这样您就可以users
获得特定的company
;您可以使用subdomains
(制作粗略的"multi tenant"应用)进行搜索,或者在登录时使用select
框。
显然,你缺乏输入意味着我必须写一个广泛的答案。
如果我是你,我会考虑你想要的flow。
使用Rails研究multi tenancy(apartment gem
如果使用PGSQL则很好) - 这可以让您更好地了解应用程序应该如何工作(IE如何需要支持用户)。