Sak*_*ian 3 ruby-on-rails restrict cancan
以下是我的能力课程中的代码片段
if user.admin?
can :manage, :all
can :destroy, :all if != current_user
Run Code Online (Sandbox Code Playgroud)
我相信你可以弄清楚我在这里要做什么.我意识到破坏包含在管理中,我在那里重复自己.有什么建议?
编辑 Yjerem的答案是正确的,我只是改变它以适合我的代码.这就是它的样子.
if user.admin?
can :manage, :all
cannot :destroy, User, :id => user.id
Run Code Online (Sandbox Code Playgroud)
正如Yjerem所说,在cancan中,能力优先级表明定义下限的能力优于其他人,因此管理员可以使用上面的代码管理除了在其下定义的所有内容.
阅读能力优先,这里有一个例子适合你!
基本上你想要的是cannot方法:
if user.admin?
can :manage, :all
cannot :destroy, User, :id => current_user.id
Run Code Online (Sandbox Code Playgroud)
因为cannot规则低于更普遍的规则,所以它会覆盖它.
| 归档时间: |
|
| 查看次数: |
803 次 |
| 最近记录: |