Ruby on rails 在我的应用程序中使用cancan和design

Ruby on rails 在我的应用程序中使用cancan和design,ruby-on-rails,devise,cancan,Ruby On Rails,Devise,Cancan,我想使用cancan来限制想要查看我的应用程序中某些页面的用户 因此,我尝试通过本教程来实现这一点: 我有两个角色:管理员和工人,我有两个控制器:任务管理员和工人 我想定义下一件事: 1) 工人可以管理和查看工人控制器的所有内容 2) 管理员可以管理和查看Tasksadminscontroller的所有内容 我不确定我是否正确定义了它: class Ability include CanCan::Ability def initialize(user) user

我想使用
cancan
来限制想要查看我的应用程序中某些页面的用户

因此,我尝试通过本教程来实现这一点:

我有两个角色:管理员和工人,我有两个控制器:任务管理员和工人

我想定义下一件事:

1) 工人可以管理和查看工人控制器的所有内容

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位是针对来宾用户的。”我强制用户在筛选:authenticate\u user

下一件事是:开始根据用户角色限制对博客应用程序的访问:

我不知道该写什么,该写在哪里

在这个例子中,他写道:

authorize! :edit, @article
因此,我尝试在tasksadmins控制器中编写以下内容:

authorize! :edit, @tasksadmins
authorize! :new, @tasksadmins
authorize! :index, @tasksadmins
authorize! :create, @tasksadmins
authorize! :show, @tasksadmins
authorize! :destroy, @tasksadmins
但我得到了一个错误:
未定义的方法“authorize!”对于TasksadminsController:Class


请帮帮我,我已经讲完了cancan的定义了。这篇文章已经很过时了,我建议你特别看看github页面上的cancan文档。这看起来像是您想要执行的操作,但如文档所示,您不必对每个操作单独进行授权。还有,应该帮助你解决第二个问题。如果您指定文章中所示的Desive的版本,我强烈建议您在可能的情况下升级gems。祝你好运

我真的很惊讶,每个角色只能访问一个控制器。您的“Taskadmins”实际管理“Taskadmin”模型对象吗?是的。。我的申请是:待办事项清单。在tasksadmins控制器中,管理员可以让工作人员执行任务。在“工作人员”控制器中,工作人员可以查看任务并仅编辑“完成”按钮(如果任务已完成或未完成)。