我有两个设计模型。
devise_for :contractors
devise_for :customers
使用户更容易,前端更干净。我希望通过customers
和contractors
的导航栏中的一个登录表单可以登录。
所以,我想知道,怎么做?我应该覆盖设计session controller
吗?如果是这样的话。我可以通过这里提到的方式签署一个设计模型 - https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app。但在那里只有它只接受一个resource
和resource name
。在这种情况下有两种模式。
什么是马上解决这个问题?
感谢
答案 0 :(得分:3)
除非您有特别好的理由,否则我建议您不要为这两种类型的用户提供2个完全独立的模型。您可能最终会复制很多功能并遇到很多奇怪的问题(比如这个)。我会有一个User
模型,并有一个标志来说明他们是哪种用户。如果他们必须有两种不同类型的配置文件,因为它们有很多不同的相关字段,那么我要使用serialize
并序列化键/值对的哈希值,或者user belongs_to :profile
并拥有{{} 1}}和ContractorProfile
。然后,配置文件关系将是多态的,然后指向这些类型中的任何一种。
当它们之间的大部分功能只是重复时,你不希望分成两种不同类型的用户。如果他们必须以不同的方式运作,那么公平,但进一步分裂。