CanCanCan和rails:限制枚举属性的允许值吗?

问题描述

我在Rails 6应用程序中使用CanCanCan。我知道我可以限制允许特定用户编辑的属性列表。

但是,还有一种方法可以限制属性的允许值

更具体地说,我有一个User类,其角色属性如下:

class  User < ApplicationRecord
  enum role: [:author,:editor,:admin]
end

在创建和更新用户时,我不希望用户能够“升级”自己的角色-例如,编辑者不应该让自己成为管理员,也不能创建新的管理员用户。

目前,我已经在UsersController中像这样解决此问题:

class UsersController < ApplicationController
  load_and_authorize_resource
  def create
    if current_user.editor? and @user.admin?
      raise CanCan::AccessDenied.new('Cannot create admin user!',action: :create,subject: @user)
    end

    # ...
  end
end

但是,这显然意味着我不能使用can?cannot?方法。所以我想知道是否有一种更优雅的方法可以直接使用CanCanCan来实现这一点?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)