강사가 각 학교의 범위에서 교실을 관리 할 수있는 학교 시스템을 구축 중입니다. 이 새로운 기록을 관리 할 강사를 활성화해야합니다 이론적으로레일 3 CanCan 권한 범위 소유
class Ability
include CanCan::Ability
#define the user ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.has_role? :instructor
can :manage, Classroom do |classroom|
classroom.new_record? && classroom.school_id == user.school_id || classroom.instructor == user
end
end
end
end
이있는 강사의 설정과의 관계가되지 않습니다 너무 오래 강사와 새로운 모두 같이
나는 일치하도록 다음과 같은 기능의 설정을 가지고 교실은 같은 학교에 속합니다.
내 교실에서 새로운 조치로 부모 학교로부터 교실을 지어이 @classroom = @school.classrooms.build
을 수용합니다. 그러면 새 클래스 룸 레코드가 school_id로 초기화되어 강사가 레코드를 관리 할 수 있습니다. 그러나 내 교실 콘트롤러에서 교실 관계에 대한 학교가 결정되기 전에 강사를 승인하고 CanCan 인증 예외가 발생하는 load_and_authorize_resource
으로 전화합니다.
이 문제가 발생합니까?
당연히, 나는 나의 승인을 위해 cancan에 조금 지나치게 의존하고 있었다고 생각한다. 한가지주의 할 점은 can can manage, Classroom, instructor == user라는 구문은 cancan 1.6.8에서 작동하지 않는 것 같아요. 정의되지 않은 지역 변수 또는 메소드 강사를 얻습니다. 교실의 내부에서 잘 작동하지만 차단하십시오. – Noz
구문은 속성이 아니라 연결과 작동 할 수 있습니다. 편집 된 버전을 사용해보십시오. – Thilo
좋은 시도이지만 여전히 주사위가 없습니다. 조금 더 장황한 것은 큰 문제는 아니지만. – Noz