0

我想使用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

4

1 回答 1

1

这篇文章已经过时了,我建议查看 github 页面上的 CanCan 文档,尤其是这个。这看起来像您想要做的,但如文档中所示,您不必authorize单独执行每个操作。此外,应该有助于您解决第二个设计问题。如果您要指定设计的版本,如文章中所示,我强烈建议您尽可能升级您的 gem。祝你好运!

于 2012-12-31T20:42:50.990 回答