【问题标题】:Manage user role in rails (Different attributes, permissions, etc...)管理 Rails 中的用户角色(不同的属性、权限等...)
【发布时间】:2016-03-10 09:03:42
【问题描述】:

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

我不想为每个用户角色创建一个表,我有一些使用枚举或诸如 cancanrolify 之类的 gem 的解决方案,但我想知道什么是提高性能、尊重协议以及编写强大的代码和架构的最佳方式。

谁能帮帮我?

【问题讨论】:

标签: ruby-on-rails devise cancan rolify


【解决方案1】:

不是 Cancancan 或 Rolify 或枚举,而是 Rolify + CancancanEnum + Cancancan

Cancancan 或Pundit(我更喜欢)等授权 gem 用于根据用户的角色管理用户可以执行的操作。所以 Roles 和 Authorization 并不是对立的,它们通常是相辅相成的。

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?之类的事情,不用多写代码,相当方便干净。

【讨论】:

    猜你喜欢
    • 2011-10-24
    • 1970-01-01
    • 2014-08-19
    • 2023-03-25
    • 2021-04-01
    • 2011-06-25
    • 1970-01-01
    • 2011-02-19
    • 2011-07-28
    相关资源
    最近更新 更多