2012-01-02 1 views
1

나는이처럼 보이는 routes.rb 있습니다.캉캉 깊이 중첩 된 자원

can :manage, Food, :category => {:restaurant => {:user_id => user.id}} 
end 

CanCan이 마지막 예제만큼 깊게 중첩을 처리하는 방법에 대한 아이디어가 있습니까?

답변

1

나는 그것이 가능하지 않다고 생각합니다. 당신은 블록을 사용하여 직접해야 할 것 :
https://github.com/ryanb/cancan/wiki/Defining-Abilities-with-Blocks

can :manage, Food do |food| 
    food.categories.joins(:restaurant).where("restaurants.user_id = ?", user.id).any? 
end 

가 정확히 무엇을 원하는가? 범주를 통해 사용자가 소유 한 레스토랑에 속한 경우에만 사용자가 음식을 관리 할 수 ​​있습니까?

+0

네, 그게 정확히 제가 원하는 것입니다! 나는 블록을 가지고 능력을 들여다 볼 것이다. 하지만 그걸로 가능하다고 생각하거나 모델을 일부 변경해야합니까? – patrickdet

+0

그래, 어떻게 든 작동합니다. 고맙습니다. 중첩은 그 보석과 함께 큰 번거 로움이 아니기 때문에 나는 declaratice_authorization로 전환했다. 어쨌든 고마워. – patrickdet