Parent/Child 类 在设计中

Parent/Child classes in Devise

我是 Rails 的新手,正在从事一个项目,我想使用设计创建 parent/child 关系。我浏览了很多关于 Devise 的文献,但没有看到任何明确的方法来完成我想要完成的事情(尽管我当然有可能忽略了答案,因为我使用了不同的术语)。

这是我想做的事情:

公司使用正常的设计注册流程进行注册,并提供一些额外信息——即公司名称、地址等。然后他们在申请中添加一次 'users'。用户不应有外部注册流程。我想每个用户都从 Company.

继承公司信息

这是我想尝试的:

  1. 同时生成 CompanyUser 设计模型。
  2. 生成User控制器,修改new动作为@current_company.user.build

这会完成我想要做的事情吗?

如果您能提供任何进一步阅读,我们将不胜感激!

这样做....

#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

这是一个 has_and_belongs_to_many 协会。


你应该做的是让companies成为它自己的模型;根本不包括 Devise。

相反,您应该使您的 User 模型成为唯一具有身份验证的模型。之后,每个 user 都必须与特定的 company 相关(或者如果你想使用 has_many :through,你可以让一个用户成为许多公司的成员)。

您必须将 Devise 身份验证范围限定在一家公司 (IE company.users.exists? user);我一直在努力,但还没有彻底实施。

这里有一个很好的参考:Scope login to subdomain

这将允许您 users 用于特定的 company;您可以使用 subdomains 来确定范围(制作一个粗糙的 "multi tenant" 应用程序),或者在 sign-in 或其他地方有一个 select 框。


显然,您缺乏意见意味着我必须写一个宽泛的答案。

如果我是你,我会考虑你想要的flow

如果您使用 PGSQL,研究 multi tenancy with Rails (the apartment gem 很好)- 这应该让您更好地了解应用程序的工作方式(即公司需要如何支持用户)。