Sprawdzanie czy użytkownik ma dostęp do zasobu

Zastanawiam się czy jest jakiś lepszy/bardziej ogólny sposób na rozwiązanie problemu polegającego na umożliwieniu użytkownikowi dostępu tylko do jego zasobów. Dotychczas robię to sprawdzając w kontrolerze np.

@order = @user.orders.find(order_id)

Sprawa, komplikuje się gdy pojawiają się zagnieżdżone zasoby, trzeba dodawać powiązanie do zasobu w modelu użytkownika na zasadzie np.

has_many items, :through 'order'

Drugim rozwiązaniem jest więcej kodu w kontrolerze. W każdym razie za każdym razem piszemy kod specyficzny dla danego zasobu.

Czy znacie jakieś bardziej ‘generyczne’ rozwiązanie?

Polecam plugin BaseAuth

http://robzon.aenima.pl/2007/12/base-auth-is-out.html

Jeżeli chcesz sam się bawić w ograniczanie dostępu to zobacz metodę with_scope w dokumentacji. W przeciwnym wypadku plugin - powyższy wygląda bardzo fajnie :slight_smile:

Powyższy plugin jest w pytę (i piszę to nie tylko dlatego, że autor jest moim szefem :wink: ), tylko trzeba Roberta nadepnąć o porządne wyjaśnienie implementacji .owns? - bo jest to z lekka nieintuicyjne.