Devise、cancan和命名空间路由

3

我的路由器中有一个名称空间,如下所示:

namespace :my do
    resources :addressbookitems
end

controllers/my/addressbookitems_controller.rb中,我有一些操作,例如indexshow

我希望根据命名空间以不同的方式限制用户可以访问的资源:如果他们访问/addressbookitems,我想要不同的权限,而访问/my/addressbookitems则需要不同的权限。如何构建我的Ability类?


2个回答

3

在cancan 1.6.10中,这已不再是必需的。能力定义可以指定命名空间 - Jared Beck

0

如果我理解正确,您想在用户拥有此模型时提供编辑、删除等功能。如果是这样,您可以这样做:

can update, AddressBookItem, :user_id => user.id
can destroy, AddressBookItem, :user_id => user.id

如果你有更复杂的逻辑在其中:
can update, AddressBookItem do |item|
  item.user == user and item.state == :something
end

谢谢,这不是我正在寻找的。我更想要控制器的不同能力逻辑,例如ReportController和My :: ReportController,尽管它们共享模型。 - Victor Pudeyev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接