CanCan Auth问题

时间:2013-12-12 18:22:01

标签: ruby-on-rails cancan

Good Afternoon All,

我正在尝试整理用户身份验证并让自己头疼。

我有一个:在用户中定义的role_type,我的用户有两个角色,雇主或开发人员,现在我的用户当前是开发人员,应该能够看到作业#index但它不能和我得到未经授权的默认cancan消息:

class JobsController < ApplicationController
  load_and_authorize_resource
  before_filter :authenticate_user!
  before_action :set_job, only: [:show, :edit, :update, :destroy]

这是Ability.rb

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如评论中所述:确保您没有像“雇主”而非“雇主”这样的拼写错误: - )

答案 1 :(得分:0)

我假设user.role_type == 'Employer'

时出错

查看您的代码,看起来雇主错过了:read操作。 如果Employer可以管理所有工作(基本的粗暴行为),您可能需要考虑给予他:manage能力

示例:

can :manage, Job if user.role_type == "Employer"
can :read, Job if user.role_type == "Developer"

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

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