Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将Desive用于两种不同的模型,但使用相同的登录表单_Ruby On Rails_Ruby On Rails 3_Authentication_Devise - Fatal编程技术网

Ruby on rails 将Desive用于两种不同的模型,但使用相同的登录表单

Ruby on rails 将Desive用于两种不同的模型,但使用相同的登录表单,ruby-on-rails,ruby-on-rails-3,authentication,devise,Ruby On Rails,Ruby On Rails 3,Authentication,Devise,我在这里看到了很多类似的问题,但没有一个完全符合我的需要 我是一个经验丰富的rails开发人员,但这个新项目是我第一次同时使用Rails3和Desive(我通常使用authlogic) 我的应用程序有两种不同的型号,我想通过Desive进行验证 第一,用户只是一个标准的用户模型 第二,业务类似于用户(它也有一个电子邮件地址列),但数据库中有其他信息(地址、电话号码等) 我希望能够通过相同的登录表单登录它们。很明显,一旦他们登录,他们将根据登录的车型类型显示不同的信息 我计划使用OmniAuth允

我在这里看到了很多类似的问题,但没有一个完全符合我的需要

我是一个经验丰富的rails开发人员,但这个新项目是我第一次同时使用Rails3和Desive(我通常使用authlogic)

我的应用程序有两种不同的型号,我想通过Desive进行验证

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

我希望能够通过相同的登录表单登录它们。很明显,一旦他们登录,他们将根据登录的车型类型显示不同的信息

我计划使用OmniAuth允许用户(虽然可能不是企业)通过facebook注册/登录,这可能与此相关,也可能与此无关

谢谢


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

我认为处理这件事的唯一方法是使用您自己的自定义登录表单和控制器来确定用户类型,然后正确登录。为了简单起见,我建议采用mark提到的方法(看看管理角色之类的方法)


拥有多个用户模型的另一个潜在问题是,您将拥有所有Desive helper方法的多个版本。因此,对于
当前用户
已登录用户
,您将拥有
当前用户
当前业务用户
已登录用户
已登录业务用户
。然后您必须实现这些方法的您自己的版本,或者您需要在使用它们的任何地方检查这两个版本。

可以在应用程序控制器中执行此操作吗


current_user=current_resource_a | | current_resource_b

肯定会有一个很好的理由说明为什么你不会有一个用户模型,具有不同的角色,并且a与只有业务角色的人才能获得的附加信息有一种关系。我确实考虑过这一点,但这似乎会让事情变得更加复杂。特别是在商业登记表方面。但这是我的计划,前提是在Desive中没有简单的方法。通过业务注册,您可以轻松地将附加属性嵌套到注册表中。然后根据注册类型定义条件验证。在我看来,这比分离模型要容易得多。@johnnyPando它最终看起来像什么?