大家下午好,
我正试图解决我的用户身份验证问题,这让我自己头疼不已。
我在User中定义了一个:role_type,我的用户有两个角色,Employer或Developer,现在我的用户是当前的开发人员,应该能够看到jobs#索引,但它不能,我得到了未经授权的默认取消消息:
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
谢谢你的帮助。
正如评论中所写:确保你没有像"Employer"而不是"Employer"这样的拼写错误:-)
我假设user.role_type == 'Employer'
查看您的代码,雇主似乎错过了:read
操作。如果Employer
可以管理所有作业(基本的crud操作),你可能想考虑给他: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方法
否则,您需要将:read
操作添加到Employer
,因为它们不是Developer
,也不会获得:read
操作