实现具有不同属性和行为的两类用户(客户端,管理员)的首选方法是什么?
有两种类型的用户是由Devise创建还是只有一个用户模型并通过CanCanCan设置权限?
由于
答案 0 :(得分:1)
仅使用一个用户,并使用role_id
等特定列为用户分配角色。
然后你可以拥有不同的角色,每个角色都有不同的身份。
admin = 1
standard = 2
然后,您可以在用户中定义一个方法,如:
def admin?
role_id == 1
end
在cancan中你可以像这样使用它:
def initialize(user)
HERE PERMISSIONS FOR NON LOGGED USERS
if user
HERE PERMISSIONS FOR LOGGED USERS
if user.admin?
HERE PERMISSIONS ONLY FOR ADMIN
end
end
end
如果您使用的是Rails> = 4.1,则可以使用该列的枚举。
答案 1 :(得分:1)
我会说具有权限的单一模型。我在这里详细回答了如何解决这个问题:
Setting up different User models and registration paths for Devise on Ruby on Rails