Autorisierung eines Arrays von IDs mit dem Pundit-Juwel

8

Ich habe ein Mehrfachauswahlfeld für eine has_many-Zuordnung. Die Params kommen als:

%Vor%

Mit starken Parametern erlaube ich dieses Attribut nicht, weil ich es selbst genehmigen möchte, damit Leute nicht einfach setzen können, was sie wollen.

%Vor%

Diese Herangehensweise wird mich zwingen, alle Foos zu finden, sie zu durchlaufen und sie einzeln zu autorisieren. Gibt es eine einfachere Möglichkeit, has_many-Berechtigungen zu verwalten, vorzugsweise mit dem Pundit-Juwel?

    
Logan Serman 20.08.2013, 15:14
quelle

2 Antworten

1

Der einfachste Weg ist das Schleifen. Iterieren Sie jeden Benutzer aus dem Array des Benutzers und autorisieren Sie jeden einzelnen Benutzer. Zum Beispiel

%Vor%

Das ist also die einfachste und einfachste Antwort.

    
Nishant Upadhyay 27.01.2015 17:29
quelle
0
___ tag123rubyonrails ___ Ruby on Rails ist ein Open-Source-Full-Stack-Webanwendungs-Framework, das in Ruby geschrieben ist. Es folgt dem populären MVC-Framework-Modell und ist bekannt für seinen "convention over configuration" -Ansatz für die Anwendungsentwicklung. ___ qstnhdr ___ Autorisierung eines Arrays von IDs mit dem Pundit-Juwel ___ tag123rubyonrails4 ___ Für Probleme, die für Version 4 von Rails spezifisch sind. Wenn Ihre Frage generell auf Ruby on Rails zutrifft, verwenden Sie das Tag [ruby-on-rails]. ___ tag123strongparameters ___ Strong Parameters erfordert standardmäßig eine Whitelist von Action Controller-Parametern. In Ruby on Rails bedeutet dies, dass der Entwickler eine Auswahl treffen muss, welche Active Model-Attribute für eine Massenzuweisung in Frage kommen. In Rails 4 sind standardmäßig starke Parameter enthalten. ___ answer28176409 ___

Der einfachste Weg ist das Schleifen. Iterieren Sie jeden Benutzer aus dem Array des Benutzers und autorisieren Sie jeden einzelnen Benutzer. Zum Beispiel

%Vor%

Das ist also die einfachste und einfachste Antwort.

    
___ qstntxt ___

Ich habe ein Mehrfachauswahlfeld für eine has_many-Zuordnung. Die Params kommen als:

%Vor%

Mit starken Parametern erlaube ich dieses Attribut nicht, weil ich es selbst genehmigen möchte, damit Leute nicht einfach setzen können, was sie wollen.

%Vor%

Diese Herangehensweise wird mich zwingen, alle Foos zu finden, sie zu durchlaufen und sie einzeln zu autorisieren. Gibt es eine einfachere Möglichkeit, has_many-Berechtigungen zu verwalten, vorzugsweise mit dem Pundit-Juwel?

    
___ tag123pundit ___ Pundit bietet eine Reihe von Helfern, die Ruby-Programmierer dabei unterstützen, reguläre Ruby-Klassen und objektorientierte Entwurfsmuster zu nutzen, um ein einfaches, robustes und skalierbares Autorisierungssystem zu erstellen. ___ antwort43943224 ___

Ich mache etwas ähnliches. Aufgrund der wenigen Informationen, die Sie zur Verfügung gestellt haben, werde ich eine Reihe von Annahmen treffen.

  1. Sie haben eine viel zu viele Assoziation von Foos zu Benutzern. Damit meine ich, dass ein Foo viele Benutzer haben kann und ein Benutzer ein Mitglied vieler Foos sein kann.

  2. Sie verstehen, wie Sie die Modelle einrichten, um (1) zu erreichen. Wenn Sie nicht nur kommentieren und ich werde diese Antwort bearbeiten.

Was wir dafür brauchen werden, um zu funktionieren, ist folgendes:

  1. @foo.users gibt eine Sammlung von Benutzern zurück
  2. @user.foos gibt eine Sammlung von foos
  3. zurück

Bei den Modellen, die zur Unterstützung der obigen Aktionen eingerichtet wurden, ist dies viel einfacher als Sie es machen.

%Vor%

Ich denke, du verpasst den Punkt des Pandits. Mit Pundit können Sie Benutzer für Benutzer autorisieren. Der obige Code definiert also einen Benutzer nur für die Gruppen (in diesem Fall foos), zu denen sie gehören.

    
___
Billy Ferguson 12.05.2017 17:16
quelle