ruby-on-rails-4 – 使用CanCanCan或Pundit的字段级权限
发布时间:2020-12-17 02:56:04 所属栏目:百科 来源:网络整理
导读:我目前正在使用带有CanCanCan 1.13.1的Rails 4.1.14,并在模型/记录级别上定义了细化权限.管理员可以管理所有文章,但用户只能编辑他们撰写的文章. 为了防止普通用户编辑特定字段,我根据角色在rails_admin中显示字段. visible do bindings[:object].id == bind
我目前正在使用带有CanCanCan 1.13.1的Rails 4.1.14,并在模型/记录级别上定义了细化权限.管理员可以管理所有文章,但用户只能编辑他们撰写的文章.
为了防止普通用户编辑特定字段,我根据角色在rails_admin中显示字段. visible do bindings[:object].id == bindings[:view].current_user.roles.include? :admin end 我还使用https://github.com/aasm/aasm gem并创建自定义操作,以便用户可以将记录移动到新状态. 但我真正想要的是根据用户的角色/记录启用字段级权限.我在CanCanCan或https://github.com/elabs/pundit页面上找不到任何文档. 有人有经验吗? 解决方法
您的意思是应该允许管理员编辑记录的所有字段,但只允许编辑器更改字段x和y?
是的,这在专家中是可行的,因为它集成了强参数(无论如何你应该使用它). pundit readme中还有一个例子(参见:强参数).我从自述文件中简化了示例: # post_policy.rb def permitted_attributes if user.admin? [:title,:body,:tag_list] else [:tag_list] end # posts_controller.rb @post.update_attributes(permitted_attributes(@post)) 控制器中的allowed_attributes助手由pundit提供,并自动调用被动策略的allowed_attributes方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |