2

在我的模型中,我有很多模型 Item 的子类。我希望能够指定对于给定角色,他们对 Item 的权限适用于 Item 的所有子类,而无需明确列出它们;如果我添加新的 Item 子类,我不想记住更新权限。我怎样才能做到这一点?

比如这个权限

if user.role? :customer_service
   can :read, Item
end

不允许客户服务代表阅读橱柜的详细信息,其中橱柜 < 项目。

4

1 回答 1

0

我认为你可以通过向 can 声明发送一个块来做到这一点。或许是这样的:

if user.role? :cutomer_service
  can do |action, subject_class, subject|
    # Checks if action is :read and if subject_class is a subclass of Item
    action == :read && subject_class < Item
  end
end

我没有对此进行测试,但我认为它应该可以工作。

于 2011-01-28T02:47:28.243 回答