管理rails中的用户角色(不同的属性,权限等...)

时间:2016-03-10 09:03:43

标签: ruby-on-rails devise cancan rolify

我正在寻找最好的方法,在ruby on rails 4.2上,创建和管理具有不同属性和权限的用户角色。

我不想为每个用户角色创建一个表格,我有一些enum的解决方案或某些宝石,如 cancan rolify 但我想要知道什么是提高性能,尊重协议,编写强大的代码和架构的最佳方法。

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:0)

它不是 Cancancan或Rolify或枚举,而是 Rolify + Cancancan Enum + Cancancan

Cancancan或Pundit等授权宝石(我更喜欢)用于根据用户角色管理用户可以执行的操作。因此,角色和授权并不反对,它们通常相互补充。

Rolify + Pundit是一个不错的解决方案,可以让您的用户拥有多个角色。

对于基于单一角色的授权,Enum更直接。它特别(但不仅限于)在其角色中具有层次结构的应用程序,例如成员,主持人,管理员。

要在5分钟内获得基于Enum的角色,请先向用户添加角色列:

class AddRoleToUsers < ActiveRecord::Migration
  def change
    add_column :users, :role, :integer, default: 0 #The default role will be the one set at 0 in user.rb
  end
end

然后,在user.rb中定义角色

enum role: { buyer: 0, seller: 1, admin: 2 }

这将直接允许您执行current_user.admin?之类的操作,而无需编写更多代码,这非常方便和干净。