设计中的父/子课程

时间:2016-01-01 22:01:32

标签: ruby-on-rails devise single-table-inheritance

我对Rails很新,并且正在开发一个项目,我想用devise创建一个父/子关系。我已经浏览了很多关于Devise的文献,但没有看到任何明确的方法去做我想要完成的事情(虽然我当然可能忽略了答案,因为我使用了不同的术语)。

以下是我想要做的事情:

公司使用正常设计注册流程注册一些额外信息 - 即公司名称,地址等。然后,他们会在应用程序内添加“用户”。用户不应该有外部注册流程。我希望每个用户都可以从Company继承公司信息。

以下是我认为我会尝试的内容:

  1. 生成CompanyUser设计模型。
  2. 生成User控制器,将new操作修改为@current_company.user.build
  3. 这会完成我想要做的事情吗?

    您可能会传递的任何进一步阅读将不胜感激!

1 个答案:

答案 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

这是has_and_belongs_to_many关联。

你应该做的是让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 tenancyapartment gem如果使用PGSQL则很好) - 这可以让您更好地了解应用程序应该如何工作(IE如何需要支持用户)。