Ich habe zwei Modelle (Artikel und Thema). Sie gehören beide einem dritten Modell Benutzer mit einer Zuordnung has_many (Benutzer hat viele Themen und Elemente). Sowohl Artikel als auch Thema have_many: images.Ruby: Declarative_authorization polymorphe Assoziationen
Das Image-Modell ist eine polymorphe Assoziation, daher hat die Tabelle die Spalten imageable_id und imagable_type. Wenn ich mit der ID 1 sowohl einem Punkt hatte und ein Thema mit der ID 1 die Tabelle aussehen würde
id imageable_id imageable_type
------------------------------------
1 1 Item
2 1 Theme
ich declarative_authorization bin mit den SQL-Abfragen aus der Datenbank neu schreiben Benutzer zu halten Zugriff auf Objekte außerhalb ihrer Konto. Ich möchte eine Autorisierungsregel schreiben, die es einem Benutzer ermöglicht, ein Bild nur zu lesen, wenn er das Objekt lesen kann, dessen Eigentümer es ist. Ich kann nicht scheinen, um die richtige Syntax zu bekommen (vielleicht ist es nicht unterstützt):
has_permission_on [:images], :to => [:manage], :join_as => :and do
if_attribute :imageable => is { "Item" }
if_permitted_to :manage, :items # Somehow I need to tell declarative_auth to imageable_id is an item_id in this case.
end
Dann würde ich eine andere Regel die oben aber für Themen nachahmt:
has_permission_on [:images], :to => [:manage], :join_as => :and do
if_attribute :imageable => is { "Theme" }
if_permitted_to :manage, :themes # Somehow I need to tell declarative_auth to imageable_id is a theme_id in this case.
end
Irgendwelche Ideen? Danke im Voraus!
- Corith Malin
Sehr altes Juwel, polymorphe Assoziationen scheint nicht unterstützt zu werden: https://github.com/stffn/declarative_authorization/issues/114. Warum nicht etwas wie Cancancan verwenden? https://github.com/CanCanCommunity/cancanc – gdurelle
Ich meine ... Es war kein altes Juwel, als ich dies schrieb und im Jahr 2010 gepostet. –