Jay*_*Jay 13 cancan ruby-on-rails-3
在尝试调试cancan的使用时,我发现如果使用以下内容,我可以通过访问的消息:
can :manage, Model
Run Code Online (Sandbox Code Playgroud)
当我将其更改为以下内容时,我被拒绝访问:
can :read, Model
can :create, Model
can :update, Model
can :destroy, Model
Run Code Online (Sandbox Code Playgroud)
manage的内容包括read,create,update和destroy的组合不包括?
谢谢.
sko*_*rks 16
默认情况下惨惨的地图:read,:create等来了相关负责人的行动.例如:
def default_alias_actions
{
:read => [:index, :show],
:create => [:new],
:update => [:edit],
}
end
Run Code Online (Sandbox Code Playgroud)
但是,当然,您不仅限于在控制器中执行这些操作,最终控制器操作可以具有任何名称.出于同样的原因,您不仅限于:read, :create, :update, :detroy在CanCan中使用.您可以将任何符号别名为任何控制器操作.让我们说你在你的控制器上有一个动作do_cool_things,你可以将任何符号别名为CanCan使用的动作,例如:
alias_action :do_cool_things, :to => :coolify
Run Code Online (Sandbox Code Playgroud)
然后你就可以这样做:
can :coolify, Neighborhood
Run Code Online (Sandbox Code Playgroud)
这意味着当前用户可以访问该:do_cool_things方法NeighborhoodsController.但是,如果你曾经使用过,:manage那么就不需要定义这个单独的动作,因为它:manage是一个全能的.所以如果你做了:
can :manage, Neighborhood
Run Code Online (Sandbox Code Playgroud)
当前用户仍然可以访问:do_cool_things控制器的方法.
因此,:manage您可以执行任何操作,但:read, :create, :update and :destroy只有无限数量的CanCan操作中的4个可以定义并映射到您选择的任何控制器操作.
cri*_*ian 12
您可以定义自定义操作(当您为给定模型定义用户的能力时,您不仅限于7个RESTful操作(创建,更新,销毁等),您可以创建自己的操作.)如果您管理了所有操作,您也可以访问这些自定义操作.
| 归档时间: |
|
| 查看次数: |
3795 次 |
| 最近记录: |