当前位置:  开发笔记 > 程序员 > 正文

cancan:"管理"与"读取,创建,更新和销毁"组合之间的区别?

如何解决《cancan:"管理"与"读取,创建,更新和销毁"组合之间的区别?》经验,为你挑选了2个好方法。

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

  can :manage, Model

当我将其更改为以下内容时,我被拒绝访问:

  can :read, Model
  can :create, Model
  can :update, Model
  can :destroy, Model

manage的内容包括read,create,update和destroy的组合不包括?

谢谢.



1> skorks..:

默认情况下惨惨的地图:read,:create等来了相关负责人的行动.例如:

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

但是,当然,您不仅限于在控制器中执行这些操作,最终控制器操作可以具有任何名称.出于同样的原因,您不仅限于:read, :create, :update, :detroy在CanCan中使用.您可以将任何符号别名为任何控制器操作.让我们说你在你的控制器上有一个动作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控制器的方法.

因此,:manage您可以执行任何操作,但:read, :create, :update and :destroy只有无限数量的CanCan操作中的4个可以定义并映射到您选择的任何控制器操作.



2> cristian..:

您可以定义自定义操作(当您为给定模型定义用户的能力时,您不仅限于7个RESTful操作(创建,更新,销毁等),您可以创建自己的操作.)如果您管理了所有操作,您也可以访问这些自定义操作.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有