我的routes.rb
看起来像这样:
resources :restaurants, :shallow => true do
resources :orders do
resources :foods
end
resources :categories do
resources :foods
end
end
在我的ability.rb
作品中有类似的内容
if user.role? :owner
can :manage, Category, :restaurant => {:user_id => user.id}
...
但是更深的嵌套似乎是浅嵌套的问题。
can :manage, Food, :category => {:restaurant => {:user_id => user.id}}
end
有关如何让CanCan处理与上一个示例一样深的嵌套的想法吗?
答案 0 :(得分: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
你到底想要什么?如果用户属于用户所拥有的餐馆,则用户只能管理食品吗?