2012-12-05 3 views
0

저는 CanCan의 힘으로 나 자신을 혼란스럽게 생각합니다.CanCan vs. Rails Association

나는 더 긴 질문을 여기에서 물었습니다 - Rails has_many :through, null belongs_to, multiple belongs_to and deletion of belongs_to?. 그러나 회원 중 한 사람의 조언에 따라 궁극적으로 궁금한 점을 제 질문으로 단순화했습니다. 간단히 말해, User은 에 Role을 갖는다. UserEvents을 만들 수 있지만, 볼 수/편집 할 수있는 것은 Role입니다. User이 (가) Role을 잃으면 더 이상 Event에 액세스 할 수 없습니다.

또한, Event 제거 만든 User 및/또는 Role 경우 Event는 것이다 여전히 Network에 존재하고 그들의 Role에서 충분히 높은 기관 (등 관리, 관리자,) 모든 Users 볼 수 .

CanCan을 사용하여 UserEvent에 대한 액세스 권한이 있는지 확인하려면 Role을 테스트 할 수 있습니다. 그 부분은 잘 작동합니다.

하지만이 Events에 대한 컨트롤러 액션에 대한 접근뿐만 아니라 Eventcan :read에 따라보기에 표시됩니다 여부 등을 모두 제어 할 수 캉캉를 사용하고있는 경우 더 개념적, 레일 has_many :through이 필요하다 UsersEvents 사이의 연관? 기술적으로 UserEventNetworkRole으로 연결되어 있기 때문에 액세스를 제어하기 위해 CanCan에 남겨 둘 수 있습니까, 아니면 연관이 필요합니까? 다음과 같은 방법을 사용하는 것이 좋습니다 :

def events 
    ... # info for grabbing all events user has access to? 
end 

또는 이것도 필요하지 않습니까? 한 번 봐 가지고

을 통해 : 당신은 has_many을 사용할 필요가없는

답변

1

당신은 그들이 위키에 난 그냥 게시 된 말을 사용하여 사용자 및 검사 권한에 대해 서로 다른 역할을 할당 할 수 있습니다 https://github.com/ryanb/cancan/wiki/defining-abilities

+0

그러면 사용자와 이벤트간에 공식적인 연관성이 없습니까? 그리고 그건 받아 들일 수있는/훌륭한 레일 연습입니까? – dewyze

+0

사용자 has_many : events와 같은 일반적인 연결을 수행하면 어떨까요? CanCan에서 그 관계를 제한합니까? 그게 당신을 위해 일하거나 더 구체적인 것을 필요로합니까? –