0

实现具有不同属性和行为的两类用户(客户、管理员)的首选方法是什么?

拥有由 Devise 创建的两种类型的用户,还是只有一种用户模型并通过 CanCanCan 设置权限?

谢谢

4

2 回答 2

1

仅使用一个用户,并为具有特定列的用户分配角色,例如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,则可以为该列使用枚举。

于 2014-11-25T14:11:40.553 回答
1

我会说具有权限的单一模型。我在这里对如何处理这个问题做出了详细的回应:

为 Devise on Ruby on Rails 设置不同的用户模型和注册路径

于 2014-11-25T14:12:15.773 回答