大家下午好,
我正在尝试整理我的用户身份验证,并给自己带来麻烦。
我在用户中定义了一个:role_type,我的用户有两个角色,雇主或开发人员,现在我的用户是开发人员,应该能够看到jobs#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
谢谢你的帮助。
发布于 2013-12-14 13:21:36
如注释中所写:确保您没有像“雇主”这样的错误,而不是“雇主”:)
发布于 2013-12-12 19:33:38
我假设错误发生在user.role_type == 'Employer'
看一看您的代码,看起来雇主似乎缺少了:read
操作。如果Employer
可以管理所有作业(基本的crud操作),您可能需要考虑给予他:manage
能力
示例:
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
操作。
https://stackoverflow.com/questions/20551223
复制相似问题