При использовании CanCan, как я могу указать разрешения для всех подклассов данного класса? - PullRequest
2 голосов
/ 28 января 2011

В моей модели у меня есть достаточное количество подклассов модели Item.Я хотел бы иметь возможность указать, что для данной роли их разрешения для Item применяются ко всем подклассам Item без явного перечисления их;если я добавлю новые подклассы Item, я не хочу помнить, чтобы обновить разрешения.Как мне этого добиться?

Например, это разрешение

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

не позволяет представителю службы поддержки клиентов читать подробности кабинета, где кабинет

1 Ответ

0 голосов
/ 28 января 2011

Я думаю, вы могли бы сделать это, отправив блок в объявление 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

Я не проверял это, но я думаю, что это должно работать.

...