3

我有两个设计模型。

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 -应用程序。但是那里只有它只接受一个resourceresource name。而在这种情况下有两个模型。

解决这个问题的正确方法是什么?

谢谢

4

1 回答 1

3

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

当他们之间的很多功能只是被复制时,您不希望分成两种不同类型的用户。如果他们必须以不同的方式运作,那就足够公平了,但要进一步拆分。

于 2013-05-12T20:25:50.483 回答