Autoryzacja na tabeli join

Hej,

Mam baze danych z tabelami

users -> users_companies -> companies -> policies

kazdy user moze albo czytac policies albo czytac i modyfikowac.
Jak zaimplementowac atrybut permission ktory bylby wykorzystywany do odczytu/zapisu policies?

Poki co wymyslilem, ze users_companies maja atrybut permission ktory jest enum’em
Problem pojawia sie w praktyce bo zeby wylistowac ladnie wszystkie policies z permission musze zrobic cos jak
Policies.joins(:companies, :users_companies, :users).select(“user_companies.permission as permission”)
Wtedy mam policies z custom_attribute permission, ale to nie dziala ze scop’ami z AR i musze zdefiniowac enum 2x
Nie dziala tez razem z CanCanCan

Moze istnieje jakis pattern cos jak: https://en.wikipedia.org/wiki/Discretionary_access_control ?
Pozdrawiam