2013-05-12 53 views
3

我有两个设计模型。如何为两个设计模型提供单一登录表单

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。而在这种情况下有两种模式。

什么是解决这个问题的权利?

感谢

回答

3

除非你有一个特别好的原因,我建议你不要有2个完全独立的车型为两种类型的用户。你可能最终会复制很多功能并遇到很多奇怪的问题(比如这个)。我会有一个User模型,并有一个标志来说明他们是哪种用户。如果他们必须具有两种不同类型的配置文件,因为他们有很多不同的相关字段,那么我要么使用serialize并序列化键/值对的散列,要么具有user belongs_to :profile,并且具有ContractorProfileCustomerProfile。配置文件关系将是多态的,然后指向这两种类型之一。

你不想分成两种不同类型的用户,他们之间的很多功能都会被重复使用。如果他们必须以不同的方式运作,那就足够公平了,但是要进一步分裂。

+0

除了名字他们没有任何类似的字段。一旦用户创建了特定类型,拥有一个表格/模型就会在众多的空字段中结束。这就是为什么我试图避免它。 – psharma 2013-05-12 20:33:42

+0

按照我的建议,将空字段分成单独的配置文件对象怎么样?然后,用户类型的特定字段可以在单独的对象中,但它们每个可以使用相同的基本模型进行验证等。 – RobHeaton 2013-05-12 20:35:12

+0

拆分成哪里?对不起,我是rails和web应用程序开发新手。 – psharma 2013-05-12 20:37:39

相关问题