我有三种类型的“用户”
商店供应商客户
最后2个用户将具有类似的属性,如
名字,姓等等
而且Shop用户类型在类型之间将有最大的对比。
至于行为,他们都将是完全不同的,虽然供应商和商店将固有的许多客户行为。
正如我所研究的,这些行为似乎可以用CanCan来处理。
我现在正在尝试如何验证这些类型。
我看过STI模型,但我无法理解这些额外的属性在哪里。
我的心智模型如下:
User是一个表,而模型的类型是继承自此的抽象模型。
因此,我想知道,我如何添加属性,如业务地址,只是商店类型?
还是用户表有一个名为Type的列,并且该类型与这些类型表相关联?在类型表中是额外的属性吗?
发布于 2014-05-14 15:49:13
甚至不用费心把设计引入其中;设计是为authentication而不是authorization.设计的。Authentication正在决定是否有人访问你的网站,你认为他们是谁,就像登录。授权正在决定是否允许用户执行某种操作,比如创建一个新的帖子。
您想要做的是拥有某种系统,为普通用户分配您的三种不同类型的用户;CanCan会这样做。单独执行此操作的一种方法是使用基于权限数字的系统。假设普通用户的权限级别为100,商店的级别为50,提供者为25。使用此系统,您可以确定用户可以执行哪些操作,而不必创建单独的模型,这将使您的模式变得不必要地复杂。下面是一个示例,说明如何使用例如UserController:
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。下面是迁移的样子:
def change
add_column :users, :permissions, :integer, default: 100
end至于authenticating,,不用担心。让设计完成它的事情;每个用户,无论是哪种类型,都将以相同的方式登录和注册,可能只是为每个有一个隐藏字段的用户设置权限级别的单独表单。
发布于 2015-10-21 17:50:36
我知道我去派对迟到了,但我要把这件事摆在未来,所以搜索者。你可以用设计来授权行动。如果您设计了“买方”和“卖方”的模型,您可以添加“buyer_signed_in?”对于任何行动,你只希望买家能够做。您还可以执行更具体的基于角色的授权,也可以签出设计页。
总之,塔瑟恩的解决方案听起来很有趣。让我们知道,如果你有任何成功!
https://stackoverflow.com/questions/23658861
复制相似问题