gpt4 book ai didi

ruby-on-rails-3 - cancan: "manage"和 "read, create, update and destroy"组合的区别?

转载 作者:行者123 更新时间:2023-12-04 11:17:27 24 4
gpt4 key购买 nike

在尝试调试 cancan 的使用时,我发现如果使用以下内容,我可以通过 accessdenied 消息:

  can :manage, Model

当我将其更改为以下内容时,我被拒绝访问:
  can :read, Model
can :create, Model
can :update, Model
can :destroy, Model

管理包括读、创建、更新和销毁的组合不包括什么?

谢谢。

最佳答案

默认情况下,CanCan 映射 :read , :create等相关的 Controller 操作,例如:

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

但是,当然您不仅限于在 Controller 中拥有这些操作,最终 Controller 操作可以有任何名称。出于同样的原因,您不仅限于 :read, :create, :update, :detroy在康康。您可以将任何符号作为任何 Controller 操作的别名。假设您在 Controller 上有一个名为 do_cool_things 的操作。 ,然后您可以将任何符号别名为 CanCan 使用的该操作,例如:
alias_action :do_cool_things, :to => :coolify

然后你就可以做到这一点:
can :coolify, Neighborhood

这意味着当前用户可以访问 :do_cool_things NeighborhoodsController的方法.但是,如果您使用过 :manage您不需要定义这个单独的操作,因为 :manage是一个包罗万象的。所以如果你做了:
can :manage, Neighborhood

当前用户仍然可以访问 :do_cool_things Controller 的方法。

所以, :manage让你做任何事,但 :read, :create, :update and :destroy只是您可以定义并映射到您选择的任何 Controller 操作的无限数量的 CanCan 操作中的 4 个。

关于ruby-on-rails-3 - cancan: "manage"和 "read, create, update and destroy"组合的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7057305/

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