实现具有不同属性和行为的两类用户(客户、管理员)的首选方法是什么?
拥有由 Devise 创建的两种类型的用户,还是只有一种用户模型并通过 CanCanCan 设置权限?
谢谢
实现具有不同属性和行为的两类用户(客户、管理员)的首选方法是什么?
拥有由 Devise 创建的两种类型的用户,还是只有一种用户模型并通过 CanCanCan 设置权限?
谢谢
仅使用一个用户,并为具有特定列的用户分配角色,例如role_id
. 然后你可以有不同的角色,每个角色都有不同的 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,则可以为该列使用枚举。
我会说具有权限的单一模型。我在这里对如何处理这个问题做出了详细的回应: