问题描述
我在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 (将#修改为@)