首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CanCan 8月号

CanCan 8月号
EN

Stack Overflow用户
提问于 2013-12-12 18:22:01
回答 2查看 50关注 0票数 1

大家下午好,

我正在尝试整理我的用户身份验证,并给自己带来麻烦。

我在用户中定义了一个:role_type,我的用户有两个角色,雇主或开发人员,现在我的用户是开发人员,应该能够看到jobs#index,但是它不能,我得到默认的cancan消息:

代码语言:javascript
运行
复制
class JobsController < ApplicationController
  load_and_authorize_resource
  before_filter :authenticate_user!
  before_action :set_job, only: [:show, :edit, :update, :destroy]

这是Ability.rb

代码语言:javascript
运行
复制
class Ability
  include CanCan::Ability

def initialize(user)
    user ||= User.new # guest user (not logged in)

    can :create, :delete, :update, Job if user.role_type == "Employer"
    can :read, Job if user.role_type == "Developer"
end
end

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-14 13:21:36

如注释中所写:确保您没有像“雇主”这样的错误,而不是“雇主”:)

票数 1
EN

Stack Overflow用户

发布于 2013-12-12 19:33:38

我假设错误发生在user.role_type == 'Employer'

看一看您的代码,看起来雇主似乎缺少了:read操作。如果Employer可以管理所有作业(基本的crud操作),您可能需要考虑给予他:manage能力

示例:

代码语言:javascript
运行
复制
can :manage, Job if user.role_type == "Employer"
can :read, Job if user.role_type == "Developer"

管理能力使用户能够访问JobsController中的每个操作。有关管理能力的说明,请参阅以下文档:https://github.com/ryanb/cancan/wiki/defining-abilities#the-can-method

否则,您需要将:read操作添加到Employer中,因为它们不是Developer,也不会得到:read操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20551223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档