2
을 설정 나는 다음과 같은 모델을 가지고 :캉캉 - 어떻게 제대로 내 응용 프로그램에서 중첩 된 자원 능력
Users
Groups
Permissions (user_id, group_id, role_id)
경우 ROLE_ID 1 : 관리자, 2 :
내가 난 있는지 확인하려면 회원 CanCan을 올바르게 이해합니다. ability.rb 파일에서 그룹 관리자 (permission.role_id == 1) 만 새 그룹 권한을 업데이트/삭제/만들 수 있기를 원합니다.
permissions.role_id == 2, 회원은 그룹과 그룹의 권한을 읽을 수 있어야합니다. 그룹 권한을 파괴 할 수있는 능력을 제외하고 당신은 또한 role_id:2
의 능력을 지정해야합니다
class Ability
include CanCan::Ability
def initialize(current_user, groupid_viewing)
current_user ||= User.new #Guest user (not signed in)
if groupid_viewing && current_user.try(:role, groupid_viewing) == 'Admin'
can :manage, Group
can [:create, :update], Permission do |permission|
current_user.try(:role, groupid_viewing) == 'Admin'
end
class GroupsController < ApplicationController
....
def current_ability
@current_ability ||= Ability.new(current_user, params[:group_id] && params[:group_id].to_i)
end
class ApplicationController < ActionController::Base
def current_ability
@current_ability ||= Ability.new(current_user, nil) #(user, group)
end