使用Devise用于两个不同的模型,但使用相同的登录表单

god*_*yan 9 authentication ruby-on-rails devise ruby-on-rails-3

我在这里看到了很多类似的问题,但没有什么能满足我的需要.

我是一个非常棒的开发人员,但这个新项目是我第一次使用Rails 3和Devise(我通常使用authlogic).

我的应用程序有两个不同的模型,我想通过设计进行身份验证.

一,用户只是一个标准的用户模型二,商业类似于用户,(它也有一个电子邮件地址栏)但它在数据库中有其他信息(地址,电话号码等)

我希望能够通过相同的登录表单将它们记录下来.然后很明显,一旦他们登录,他们将被呈现不同的信息,具体取决于模型的登录类型.

我计划使用OmniAuth允许用户(尽管可能不是商家)通过Facebook注册/开启可能相关或不相关.

谢谢!

这样做最简单的方法是什么?

Bra*_*ker 5

我认为处理这种情况的唯一方法是拥有自己的自定义登录表单和控制器,确定用户类型,然后正确签名.我会推荐一种类似于简单提到的标记的方法(看看CanCan之类的东西来管理角色).

拥有多个用户模型的另一个潜在问题是,您将拥有所有设计辅助方法的多个版本.因此,对于current_<resource><resource>_signed_in?你有current_user,current_business_user,user_signed_in?business_user_signed_in?.然后,您要么必须实现这些方法的自己版本,要么在需要的任何地方检查两个版本.