Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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 Rails 3,Desive,共享相同视图的多个角色_Ruby On Rails_Devise - Fatal编程技术网

Ruby on rails Rails 3,Desive,共享相同视图的多个角色

Ruby on rails Rails 3,Desive,共享相同视图的多个角色,ruby-on-rails,devise,Ruby On Rails,Devise,我正在编写一个交易系统,我有3个模型/角色:买家、卖家和管理员。我已经为每个模型生成了Desive视图,但我想使用相同的登录、忘记密码页面等。对于它们,不是维护3组视图,有没有办法做到这一点 买方和卖方具有相似的字段(姓名、姓氏、电子邮件地址、电话等),是否可以将STI与Desive一起使用,并且是否相当简单?目前,我有3个没有继承的独立模型。您可以简单地拥有一个带有:role属性的单用户模型,还可以通过CanCan或decl_auth(gems)实现一个简单的ACL。这样,他们将通过同一个会话

我正在编写一个交易系统,我有3个模型/角色:买家、卖家和管理员。我已经为每个模型生成了Desive视图,但我想使用相同的登录、忘记密码页面等。对于它们,不是维护3组视图,有没有办法做到这一点


买方和卖方具有相似的字段(姓名、姓氏、电子邮件地址、电话等),是否可以将STI与Desive一起使用,并且是否相当简单?目前,我有3个没有继承的独立模型。

您可以简单地拥有一个带有
:role
属性的单用户模型,还可以通过CanCan或
decl_auth
(gems)实现一个简单的ACL。这样,他们将通过同一个会话登录等。Desive和CanCan是一种非常流行的方法,在网上和各自的Github wiki中都有很好的文档记录


对于管理员,您可以修改验证以跳过额外属性,并在数据库中将其保留为空。

您可以简单地使用带有
:role
属性的单用户模型,还可以通过CanCan或
decl_auth
(gems)实现简单的ACL。这样,他们将通过同一个会话登录等。Desive和CanCan是一种非常流行的方法,在网上和各自的Github wiki中都有很好的文档记录


对于管理员,您可以修改验证以跳过额外属性,并在数据库中将其保留为空。

啊,我明白了,因此我可以为用户使用STI。是否可以使用您的方法为买家和卖家使用不同的注册页面?布局和表单字段将根据他们是买家还是卖家而改变。如上所述,登录页面将是通用的,但是可以,您可以为每个用户自定义不同的登录页面。让Deviate生成它的视图,然后你可以在视图中测试当前用户。买家?或当前用户。卖家?,并加载不同的部分(例如)。如果你不想为每个角色设置实例方法,你可以只做
如果当前用户。角色=='buyer'
等等……啊,我明白了,所以我可以为用户使用STI。是否可以使用您的方法为买家和卖家使用不同的注册页面?布局和表单字段将根据他们是买家还是卖家而改变。如上所述,登录页面将是通用的,但是可以,您可以为每个用户自定义不同的登录页面。让Deviate生成它的视图,然后您可以在视图中对
当前用户.buyer?
当前用户.seller?
进行测试,并加载不同的部分(例如)。如果您不想为每个角色设置一个实例方法,您只需执行
如果当前用户.role='buyer'
等。。。