我正在寻找最好的方法,在ruby on rails 4.2上,创建和管理具有不同属性和权限的用户角色。
我不想为每个用户角色创建一个表格,我有一些enum的解决方案或某些宝石,如 cancan 或 rolify 但我想要知道什么是提高性能,尊重协议,编写强大的代码和架构的最佳方法。
任何人都可以帮助我?
答案 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?
之类的操作,而无需编写更多代码,这非常方便和干净。