Ruby on rails 管理rails中的用户角色(不同的属性、权限等)

Ruby on rails 管理rails中的用户角色(不同的属性、权限等),ruby-on-rails,devise,cancan,rolify,Ruby On Rails,Devise,Cancan,Rolify,我正在寻找RubyonRails4.2中创建和管理具有不同属性和权限的用户角色的最佳方法 我不想为每个用户角色创建一个表,我有一些enum解决方案或一些gem,比如cancan或rolify,但我想知道提高性能、遵守协议以及编写强大代码和体系结构的最佳方法是什么 有人能帮我吗?不是Cancancan或Rolify或enum,而是Rolify+Cancancan或enum+Cancancan 授权gems,比如Cancancan或(我更喜欢)用于根据用户的角色管理用户可以做什么。所以角色和授权不是

我正在寻找RubyonRails4.2中创建和管理具有不同属性和权限的用户角色的最佳方法

我不想为每个用户角色创建一个表,我有一些enum解决方案或一些gem,比如cancanrolify,但我想知道提高性能、遵守协议以及编写强大代码和体系结构的最佳方法是什么

有人能帮我吗?

不是Cancancan或Rolify或enum,而是Rolify+Cancancan或enum+Cancancan

授权gems,比如Cancancan或(我更喜欢)用于根据用户的角色管理用户可以做什么。所以角色和授权不是对立的,它们通常是相辅相成的

Rolify+Pundit是一个很好的解决方案,它可以让您的用户拥有多个角色

对于基于单个角色的授权,Enum更简单。它特别(但不仅仅)被角色层次分明的应用程序使用,比如会员、版主、管理员

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

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
class AddRoleToUsers
然后,在user.rb中定义角色

enum角色:{买方:0,卖方:1,管理员:2}


这将直接允许您执行类似于
current\U user.admin?
,而无需编写更多的代码,这非常方便和干净。

cancan
是管理用户角色的最佳方式。请参阅此链接上的实现,您应该使用cancan gem(),为什么cancan gem优于rolify或enum?