gpt4 book ai didi

ruby-on-rails-4 - 使用 CanCanCan 或 Pundit 的字段级权限

转载 作者:行者123 更新时间:2023-12-04 07:08:50 24 4
gpt4 key购买 nike

我目前使用 Rails 4.1.14 和 CanCanCan 1.13.1,并在模型/记录级别定义了粒度权限。管理员可以管理所有文章,但用户只能编辑他们创作的文章。

为了防止普通用户编辑特定字段,我根据角色在 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 中是可能的,因为它集成了强大的参数(无论如何你都应该使用)。 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))
permitted_attributes Controller 中的助手由专家提供并自动调用 permitted_attributes推断策略的方法。

关于ruby-on-rails-4 - 使用 CanCanCan 或 Pundit 的字段级权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34822084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com