CanCan a dziedzieczenie ról ale dla obiektów, nie klas

Witam, z tego co się zorientowałem CanCan całkiem fajnie wspiera dziedziczenie ról dla całych klas https://github.com/ryanb/cancan/wiki/Role-Based-Authorization dział Role Inheritance. Niestety gdy przychodzi do obiektów już jest trudniej. Mam z grubsza takią zależnośc chains <-- outlets
a do tego prawa wyglądają tak admins <-- chain managers <-- outlet_managers <-- sellers.
Jak w widać w kodzie poniżej, chain_manager może edytować dane outletów które są w jego sieci itd.
Już dla tych paru modeli widać że kod jest mało DRY, boje się że rozrośnie się mocno. Jakieś porady jak zaimplamentować dziedziczenie ról. Czyli np chain manager może zrobić wszystko co outlet manager plus jakies swoje rzeczy.
Nie wiem czy CanCan coś tu ułatwi, bo jak sam autor wspomniał https://github.com/ryanb/cancan/issues/215 implementacja ról wychodzi poza zakres działania gema.

[code=ruby]class Ability
include CanCan::Ability

def initialize(user)
@user = user

if user.role? :admin
  can :manage, :all
  
elsif user.role? :chain_manager
  can :manage, Chain do |chain|
    chain.chain_managers.include?(@user)
  end
  can :manage, Outlet do |outlet|
    outlet.chain.chain_managers.include?(@user)
  end
  
elsif user.role? :outlet_manager
  can :manage, Outlet do |outlet|
    outlet.outlet_managers.include?(@user)
  end
  
elsif @user.role? :seller
  can :read, Outlet do |outlet|
    outler.sellers.include?(@user)
  end
end

end
end[/code]