2 Stimmen

Können Fähigkeit durch Beziehungen

Ich verwende CanCan, um die Fähigkeiten von Benutzern zu definieren, aber ich bin gerade auf ein Problem gestoßen, bei dem ich nur dem Benutzer erlauben möchte, ein Modell über sein Elternteil zu verwalten.

Zum Beispiel. Ein Buch hat einen Autor, ein Buch hat viele Kapitel. Ich möchte nur dem Autor erlauben, Kapitel zu verwalten. Mein Buchmodell hat eine author_id. Mein Kapitelmodell hat eine book_id.

In meiner Datei Ability.rb habe ich

user.has\_role? :author
can :manage, Book, :author\_id => user.id
can :manage, Chapter
can :read, :all
else

aber ich sehe nirgendwo in der Dokumentation, wo ich definiere, dass der Autor nur die Kapitel des Buches verwalten kann. Gibt es einen anderen Weg, um ein Buch und alle seine Beziehungen zu autorisieren? Oder soll ich irgendwie definieren, dass das Kapitel zum Buch gehört? Ich speichere das Kapitel nicht über das Buchmodell (es ist nicht verschachtelt).

1voto

bbonamin Punkte 28942

Ein möglicher Ansatz:

 user.has_role? :author
            kann :verwalten, Buch, :author_id => user.id
            kann :verwalten, Kapitel do |kapitel|
              kapitel.buch.author_id == user.id
            end
            kann :lesen, :all
        sonst

Vielleicht gibt es eine bessere Lösung...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X