Dmi*_*sky 4 devise rails-admin ruby-on-rails-4 pundit cancancan
我目前正在使用带有CanCanCan 1.13.1的Rails 4.1.14,并在模型/记录级别上定义了细化权限.管理员可以管理所有文章,但用户只能编辑他们撰写的文章.
为了防止普通用户编辑特定字段,我根据角色在rails_admin中显示字段.
visible do
bindings[:object].id == bindings[:view].current_user.roles.include? :admin
end
Run Code Online (Sandbox Code Playgroud)
我也使用https://github.com/aasm/aasm gem并创建自定义操作,以便用户可以将记录移动到新状态.
但我真正想要的是根据用户的角色/记录启用字段级权限.我在CanCanCan或https://github.com/elabs/pundit页面上找不到任何文档.
有人有经验吗?
您的意思是应该允许管理员编辑记录的所有字段,但只允许编辑器更改字段x和y?
是的,这在专家中是可行的,因为它集成了强参数(无论如何你应该使用它).权威自述文件中也有一个例子(参见:强参数).我从自述文件中简化了示例:
# 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))
Run Code Online (Sandbox Code Playgroud)
permitted_attributes控制器中的助手由权威人员提供,并自动调用permitted_attributes被动策略的方法.
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |