Serialisieren Sie Berechtigungen (z. B. CanCan) mit active_model_serializers

8

Wie kann ich Berechtigungen mit active_model_serializers serialisieren? Ich habe keinen Zugriff auf current_user oder die can? -Methode in Modellen und Serializern.

    
Jo Liss 25.07.2012, 23:24
quelle

3 Antworten

22

Um Zugriff auf current_user im Serializer-Kontext zu erhalten, verwenden Sie zuerst die neue Bereichsfunktion:

%Vor%

Wenn Sie die Serialisierer manuell instanziieren, übergeben Sie den Gültigkeitsbereich:

%Vor%

Fügen Sie dann innerhalb des Serialisierers benutzerdefinierte Methoden hinzu, um Ihre eigenen Pseudoattribute für die Autorisierung hinzuzufügen. Verwenden Sie dazu scope (den aktuellen Benutzer), um Berechtigungen zu bestimmen.

Wenn Sie CanCan verwenden, können Sie Ihre Ability-Klasse instanziieren, um auf die Methode can? zuzugreifen:

%Vor%     
Jo Liss 25.07.2012, 23:29
quelle
2

Wir haben ein Juwel erstellt, das diese Funktionalität bietet: Ссылка

    
ghempton 20.03.2013 23:14
quelle
2

Ich denke, du kannst alles, was du willst, an serialization_scope weitergeben, also gebe ich einfach die Fähigkeit weiter.

%Vor%

Ich kann nicht anders, da meine Fähigkeiten tatsächlich auf zwei Variablen basieren (nicht im obigen Beispiel).
Wenn Sie weiterhin Zugriff auf current_user benötigen, können Sie einfach eine Instanzvariable auf Ability setzen.

    
Romain 23.05.2014 14:58
quelle