Ruby on rails 3 如何在cancan中将功能应用于非restful控制器
我是rails的新手,就我的一生而言,我不会“得到”cancan 我读过,但不知道如何将说明应用于我的情况 在cancan wiki中有:Ruby on rails 3 如何在cancan中将功能应用于非restful控制器,ruby-on-rails-3,cancan,Ruby On Rails 3,Cancan,我是rails的新手,就我的一生而言,我不会“得到”cancan 我读过,但不知道如何将说明应用于我的情况 在cancan wiki中有: 管理员控制器 滚球动作 能力课上说: can :roll, :logs if user.admin? 我不明白:roll和:logs符号与控制器和操作有什么关系 我想做的就是说,如果用户是管理员,请给他们访问AdminController操作的权限,否则不允许,这可能吗?是,这可能 声明 can :roll, :logs if user.admmin?
- 管理员控制器
- 滚球动作
can :roll, :logs if user.admin?
我不明白:roll和:logs符号与控制器和操作有什么关系
我想做的就是说,如果用户是管理员,请给他们访问AdminController操作的权限,否则不允许,这可能吗?是,这可能
声明
can :roll, :logs if user.admmin?
表示调用authorize!:滚动,:logs
如果用户不是管理员,则会引发未经授权的异常
所以它与控制器或动作没有任何关系,除非你这样做
例如,如果您有一个带有动作滚轮的logs_控制器,您可以执行类似的操作
class LogsController < ApplicationController
def roll
authorize! :roll, :logs
# Rest of the roll functionality.
end
管理控制器.rb
class Ability
include CanCan::Ability
def initialize(user)
can(:manage, :admin) if user.admin?
end
end
class AdminController < ApplicationController
authorize_resource :class => false
def foo
end
def bar
end
end
class AdminControllerfalse
德福
结束
def棒
结束
结束
这将确保只有管理员可以访问admin\u控制器的foo和bar操作
:class=>false
语句表示您没有授权某个资源,这是我们想要的,因为您没有授权某个帖子或评论。您只是在授权控制器上的操作。是的,这是可能的
声明
can :roll, :logs if user.admmin?
表示调用authorize!:滚动,:logs
如果用户不是管理员,则会引发未经授权的异常
所以它与控制器或动作没有任何关系,除非你这样做
例如,如果您有一个带有动作滚轮的logs_控制器,您可以执行类似的操作
class LogsController < ApplicationController
def roll
authorize! :roll, :logs
# Rest of the roll functionality.
end
管理控制器.rb
class Ability
include CanCan::Ability
def initialize(user)
can(:manage, :admin) if user.admin?
end
end
class AdminController < ApplicationController
authorize_resource :class => false
def foo
end
def bar
end
end
class AdminControllerfalse
德福
结束
def棒
结束
结束
这将确保只有管理员可以访问admin\u控制器的foo和bar操作
:class=>false
语句表示您没有授权某个资源,这是我们想要的,因为您没有授权某个帖子或评论。您只是在授权控制器上的操作。+1非常感谢Arjan,您的解释非常清楚!我希望文档中有这么清楚!再次感谢,非常感谢。+1非常感谢Arjan,你的解释非常清楚!我希望文档中有这么清楚!再次感谢,非常感谢。