首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Devise和Rails 4对多种类型的用户建模

用Devise和Rails 4对多种类型的用户建模
EN

Stack Overflow用户
提问于 2014-05-14 15:22:27
回答 2查看 1.5K关注 0票数 1

我有三种类型的“用户”

商店供应商客户

最后2个用户将具有类似的属性,如

名字,姓等等

而且Shop用户类型在类型之间将有最大的对比。

至于行为,他们都将是完全不同的,虽然供应商和商店将固有的许多客户行为。

正如我所研究的,这些行为似乎可以用CanCan来处理。

我现在正在尝试如何验证这些类型。

我看过STI模型,但我无法理解这些额外的属性在哪里。

我的心智模型如下:

User是一个表,而模型的类型是继承自此的抽象模型。

因此,我想知道,我如何添加属性,如业务地址,只是商店类型?

还是用户表有一个名为Type的列,并且该类型与这些类型表相关联?在类型表中是额外的属性吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-14 15:49:13

甚至不用费心把设计引入其中;设计是为authentication而不是authorization.设计的。Authentication正在决定是否有人访问你的网站,你认为他们是谁,就像登录。授权正在决定是否允许用户执行某种操作,比如创建一个新的帖子。

您想要做的是拥有某种系统,为普通用户分配您的三种不同类型的用户;CanCan会这样做。单独执行此操作的一种方法是使用基于权限数字的系统。假设普通用户的权限级别为100,商店的级别为50,提供者为25。使用此系统,您可以确定用户可以执行哪些操作,而不必创建单独的模型,这将使您的模式变得不必要地复杂。下面是一个示例,说明如何使用例如UserController:

代码语言:javascript
复制
def show
  if current_user.permissions == 100
     render "customer_show"
  elsif current_user.permissions == 50
     render "shop_show"
  else
     render "provider_show"
  end
end

最简单的方法是向用户的表中添加一个名为permissions的列,该列在创建新行时默认为100。下面是迁移的样子:

代码语言:javascript
复制
def change
  add_column :users, :permissions, :integer, default: 100
end

至于authenticating,,不用担心。让设计完成它的事情;每个用户,无论是哪种类型,都将以相同的方式登录和注册,可能只是为每个有一个隐藏字段的用户设置权限级别的单独表单。

票数 2
EN

Stack Overflow用户

发布于 2015-10-21 17:50:36

我知道我去派对迟到了,但我要把这件事摆在未来,所以搜索者。你可以用设计来授权行动。如果您设计了“买方”和“卖方”的模型,您可以添加“buyer_signed_in?”对于任何行动,你只希望买家能够做。您还可以执行更具体的基于角色的授权,也可以签出设计页

总之,塔瑟恩的解决方案听起来很有趣。让我们知道,如果你有任何成功!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23658861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档