加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何限制用户使用CanCanCan更新某些字段?

发布时间:2020-12-17 02:07:43 所属栏目:百科 来源:网络整理
导读:所以,如果我有一个用户,他可以创建/更新他的服务,但他不能:发布(bool)他们,从update_params哈希中跳过这个字段的最佳解决方案是什么? 我找到了this个类似的问题,但它链接到CanCan 2.0,它从未发布过,我想知道是否有办法用CanCanCan解决这个问题,但在他们的
所以,如果我有一个用户,他可以创建/更新他的服务,但他不能:发布(bool)他们,从update_params哈希中跳过这个字段的最佳解决方案是什么?

我找到了this个类似的问题,但它链接到CanCan 2.0,它从未发布过,我想知道是否有办法用CanCanCan解决这个问题,但在他们的文档中找不到任何东西.非常感谢!

解决方法

据我所知你不能.我会有一个单独的发布行动.所以我完全省略了表单和service_params的发布.

然后我会做这样的事情:

Class ServicesController

  def publish
    @service = Service.find(params[:id])  
    @service.update_column(:publish,true)
  end

end

然后在能力

can :manage,Service
cannot :publish,Service

或者你可以这样做(假设你有一个当前用户和一些定义为管理员的东西)

def service_params
  if current_user.admin?
    params.require(:service).permit(:my_field,:publish)
  else
    params.require(:service).permit(:my_field)
  end
end

因此,如果他们不是管理员,您将从参数中省略它.在这种情况下,您可能希望隐藏视图中的字段,具体取决于它们是否可以更改字段.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读