【发布时间】:2014-11-25 13:53:16
【问题描述】:
实现具有不同属性和行为的两类用户(客户、管理员)的首选方法是什么?
拥有由 Devise 创建的两种类型的用户,还是只有一种用户模型并通过 CanCanCan 设置权限?
谢谢
【问题讨论】:
-
用户属于角色,角色拥有多个权限。
标签: ruby-on-rails devise cancan cancancan
实现具有不同属性和行为的两类用户(客户、管理员)的首选方法是什么?
拥有由 Devise 创建的两种类型的用户,还是只有一种用户模型并通过 CanCanCan 设置权限?
谢谢
【问题讨论】:
标签: ruby-on-rails devise cancan cancancan
我会说具有权限的单一模型。我在这里对如何处理这个问题做出了详细的回应:
Setting up different User models and registration paths for Devise on Ruby on Rails
【讨论】:
仅使用一个用户,并使用特定列(如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,则可以为该列使用枚举。
【讨论】: