如何在Rails中添加角色和权限,即使它已经由devise构建

时间:2019-05-22 10:46:47

标签: ruby-on-rails devise rubygems ruby-on-rails-5

在过去两个月中使用Devise rails出租项目的应用程序,现在该项目已经发货,就必须更改

作为我的项目通过电子邮件发送给我作为更改路线

“我已经决定我们将纯粹从事B2B娱乐活动。因此,不允许私人列出出租设备,只有经过验证的出租中心/硬件商店才可以列出出租设备。 但是,私人个人将能够创建个人资料并通过该平台进行预订,而不必从自己的设备/工具中出租。”

所以我的问题是我应该像

一样在用户中添加新列吗?

“设计用户”列中的角色和权限:

用户(个人),

管理员(我们的员工)

公司。

或在项目中使用Rails-devise-pundit或cancancan之类的宝石,即使该项目已经建成。

2 个答案:

答案 0 :(得分:2)

我们可以使用cancan宝石来做到这一点。

实施的基本步骤:

  1. 将gem导入Gemfile

  2. 使用以下命令创建能力文件

rails g cancan:ability
  1. 按如下所示定义访问权限。
class Ability
  include CanCan::Ability

  def initialize(user)

    alias_action :create, :read, :update, :destroy, :to => :crud
    if user.super_admin?
        can :access, :rails_admin   # grant access to rails_admin
        can :dashboard              # grant access to the dashboard

        # Accss Level to Models


        can :crud

    end

  end
end

查看有关Gems documentation的更多详细信息

答案 1 :(得分:1)

您可能想看看rolify宝石。

它非常易于使用,您可以添加多个角色,并将多个角色分配给一个用户。这样,您就可以避免在用户表中添加新列。

以下是您可以为用户分配角色的方法:

user = User.find(1)
user.add_role :admin

验证用户是否具有角色admin

user = User.find(1)
user.has_role? :admin
=> true