如何为两个设计模型提供单点登录表单

时间:2013-05-12 19:22:09

标签: ruby-on-rails ruby-on-rails-3 devise

我有两个设计模型。

devise_for :contractors
devise_for :customers

使用户更容易,前端更干​​净。我希望通过customerscontractors的导航栏中的一个登录表单可以登录。

所以,我想知道,怎么做?我应该覆盖设计session controller吗?如果是这样的话。我可以通过这里提到的方式签署一个设计模型 - https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app。但在那里只有它只接受一个resourceresource name。在这种情况下有两种模式。

什么是马上解决这个问题?

感谢

1 个答案:

答案 0 :(得分:3)

除非您有特别好的理由,否则我建议您不要为这两种类型的用户提供2个完全独立的模型。您可能最终会复制很多功能并遇到很多奇怪的问题(比如这个)。我会有一个User模型,并有一个标志来说明他们是哪种用户。如果他们必须有两种不同类型的配置文件,因为它们有很多不同的相关字段,那么我要使用serialize并序列化键/值对的哈希值,或者user belongs_to :profile并拥有{{} 1}}和ContractorProfile。然后,配置文件关系将是多态的,然后指向这些类型中的任何一种。

当它们之间的大部分功能只是重复时,你不希望分成两种不同类型的用户。如果他们必须以不同的方式运作,那么公平,但进一步分裂。