Tôi có tài nguyên Dự án được lồng trong tài nguyên Người dùng.Rails cancan cho phép tài nguyên lồng nhau
My Cancan lớp Khả năng là:
class Ability
include CanCan::Ability
def initialize(user)
#everyone
can :read, Project
if user.blank?
# guest user
...
else
#every signed in user
case user.role
when User::ROLES[:admin]
#only admin role user
can :manage, :all
when User::ROLES[:member]
#only member role user
can :update, User, :id => user.id
can [:create, :update, :destroy], Project, :user_id => user.id
else
end
end
end
end
Và điều khiển dự án:
class ProjectsController < ApplicationController
load_and_authorize_resource :user
load_and_authorize_resource :projects, :through => :user, :shallow => true
...
end
Tôi có vài câu hỏi:
Có thể từ chối: đọc người dùng và cho phép: đọc Dự án, để mọi người có thể truy cập/người dùng/10/dự án, nhưng không phải/người dùng/10 hoặc/người dùng?
Làm cách nào để từ chối truy cập của người dùng: hành động mới với user_id khác? Ví dụ: nếu tôi thêm
#everyone
can :read, User
can :read, Project
mã này cho phép người dùng có id 42 truy cập/người dùng/41/dự án/mới.