【发布时间】:2012-12-31 19:04:10
【问题描述】:
我想使用cancan 来限制想要查看我的应用程序中某些页面的用户。
所以我尝试通过本教程来做到这一点: http://www.roberthuberdeau.com/articles/9-Blog-tutorial-part-3
我有两个角色:Admin 和 Worker,我有两个控制器:Tasksadmins 和 Workers。
我要定义下一个东西:
1)Workers可以管理和查看Workerscontroller的所有东西。
2) 管理员可以管理和查看 Tasksadminscontroller 的所有内容。
我不确定我是否正确定义它:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if user.role? :Admin
can :manage, :tasksadmins
elsif user.role? :Worker
can :manage, :workers
end
end
end
我认为我不需要实现的下一件事是:“def initialize user bit 是为来宾用户准备的。”我强制用户登录:before_filter :authenticate_user
接下来是:开始根据用户角色限制对博客应用的访问:
我不知道该写什么和在哪里写。
在示例中,他写道:
authorize! :edit, @article
所以我尝试在 tasksadmins 控制器中编写以下内容:
authorize! :edit, @tasksadmins
authorize! :new, @tasksadmins
authorize! :index, @tasksadmins
authorize! :create, @tasksadmins
authorize! :show, @tasksadmins
authorize! :destroy, @tasksadmins
但我收到一个错误:undefined method 'authorize!' for TasksadminsController:Class
请帮帮我,我在cancan的定义末尾。
【问题讨论】:
-
我很惊讶每个角色只能访问一个控制器。您的“Taskadmins”实际上管理“Taskadmin”模型对象吗?
-
是的.. 我的申请是:TODO 列表。在 tasksadmins 控制器中,管理员可以让工作人员执行任务。在“工人”控制器中,工人可以看到任务并仅编辑完成按钮(如果任务完成与否)。
标签: ruby-on-rails devise cancan