我在尝试使用 cancan 授权时遇到问题。我有每个用户一个角色的用户,所以我按照cancan wiki 中的建议添加了 user.role 列。
我也有幼儿园的索引视图和儿童的另一个索引视图。
我想要实现的是只允许具有角色幼儿园或父母(儿童)的相应用户访问索引视图。
当我现在在幼儿园控制器中授权幼儿园时,没有人被允许访问索引视图,尽管我在我的能力模型中定义了它。
帮助将不胜感激。我不知道我错过了什么......
能力模型:
class Ability
include CanCan::Ability
def initialize(user)
[...]
elsif user.role == 'kindergarden'
can [:update, :destroy], Kiga do |kiga|
kiga.user_id == user.id
end
can :read, Kiga do |kiga|
kiga.user_id == user.id
end
can :index, Kiga
can :create, Kiga
else
end
幼儿园管理员:
class KigasController < ApplicationController
before_action :set_kiga, only: [:show, :edit, :update, :destroy]
# GET /kigas
# GET /kigas.json
def index
@kigas = Kiga.all
authorize! :index, @kiga
end