Rails CanCan:CanCan 是否假设我可以:读取,如果我可以:更新?

发布于 2024-10-01 19:20:54 字数 285 浏览 5 评论 0原文

这适用于授权!调用

can [:read,:update], brand

,但当 Skill 类中的行更改为:

can :update, brand

brand is not nil 时,会抛出 CanCan::AccessDenied 。

如果我可以 :update 某些内容,我难道不应该自动能够 :read 吗?

我只是想知道这是否是设计使然,或者我是否在某个地方遗漏了某些东西。

This works for an authorize! call

can [:read,:update], brand

but CanCan::AccessDenied is thrown when the line in the Ability class is changed to:

can :update, brand

brand is not nil.

If I can :update something, shouldn't I automatically be able to :read it?

I just want to know if this is by design, or if I am missing something somewhere.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮云落日 2024-10-08 19:20:54

这是设计使然。定义的默认别名很少:

def default_alias_actions
  {
    :read => [:index, :show],
    :create => [:new],
    :update => [:edit],
  }
end

因此,如果某人拥有“更新”权限,那么他就拥有“编辑”权限。这对于遵循 REST 风格的 Rails 应用程序来说是很自然的。

但是,您可以非常简单地定义您自己的别名。

This is by design. There are just few default aliases defined:

def default_alias_actions
  {
    :read => [:index, :show],
    :create => [:new],
    :update => [:edit],
  }
end

So if someone has 'update' right then he has 'edit' right. This is natural for Rails applications which follow REST style.

However you can define your own aliases very simply.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文