2016-07-06 18 views
0

Ich baue eine App, die den Geschäften helfen soll, ihre Mitarbeiter zu organisieren. Es gibt viele Geschäfte und jedes Geschäft hat viele Rollen für das Personal. Die einzige konstante Position ist die des Managers. Ich möchte es ihm ermöglichen, seine eigenen Rollen zu schaffen. Zum Beispiel kann der Lieferant in Geschäft A den Status order_status aktualisieren, in Shop B jedoch nicht. Wie Sie sehen können, möchte ich, dass die Rollen benutzerdefiniert und im jeweiligen Shop eingeschränkt sind. Ich erwäge drei Edelsteine ​​für die Genehmigung - Cancancan, Rolify und Pandit (aber ich bin offen für Vorschläge). Rolify ist nicht so berühmt, aber es hat die convinient OptionSchienen, gem Wahl für die Autorisierung

user.has_role?(:manager, Shop.find(4)) 

zu sagen, welches Juwel denken Sie, ist die beste Wahl? Vielen Dank!

EDIT: Ich fand den folgenden Link sehr hilfreich. Click

+0

Ein beliebtes Juwel für "Rollen" ist [Pandit] (https://github.com/elabs/pundit) –

Antwort

0

Pundit verwalten Erlaubnis durch Richtlinien und ich denke, das ist das Beste.

Sie können Kreta eine App/Politik/application_policy.rb, die Aktionen wie index/show verwalten/erstellen ....

def index? 
    false 
    end 

    def show? 
    false 
    end 

    def create? 
    false 
    end 

    def new? 
    create? 
    end 

    def update? 
    false 
    end 

    def edit? 
    update? 
    end 

    def destroy? 
    false 
    end 

danach und Richtlinien erzeugen wie

class MyClassPolicy < ApplicationPolicy 
end 

prüfen Pandit Dokumentation.

Über Rollen, die Sie verwenden können: Rollenmodell gem (https://github.com/martinrehfeld/role_model), die Rollen zu einfach verwalten. Überprüfen Sie das Beispiel und fragen Sie, falls nötig.

1

Die Antwort auf Ihre Frage würde auf den Meinungen des Beantworters basieren. Meiner Meinung nach würde ich CanCanCan bevorzugen, hauptsächlich, weil ich es schon eine Weile benutzt habe. Das Setup zu verstehen, mag anfangs ein bisschen problematisch sein, aber sobald ich darüber hinweggekommen bin, ist alles glatt. Dank der einfachen Logik kann ich auch Enums in meiner Anwendung verwenden und in kürzester Zeit zur Produktivität gelangen. Andere würden Pundit argumentieren, was ebenfalls einfach einzurichten und einfach zu integrieren und einfach zu arbeiten mit anderen Bibliotheken, wie z. B. rolify und devise etc. Es gibt möglicherweise keine richtige oder falsche Antwort in diesem Fall, aber ich denke, es wäre letztlich bestimmt durch Ihren spezifischen Anwendungsfall und die Zeit, die Sie für die Einrichtung haben.

1

Wenn Sie für die Autorisierung als Pundit Gem sagen, ist am besten gemäß Ihrer Anforderung.

Aber nach meinem Wissen tun nicht nur Pandit oder irgendein Juwel alles für dich. Sie müssen allen Benutzern eine dynamische Berechtigung erteilen, wie pro Shop. Sie müssen also mit Ihrem Datenbank-Setup auch zurechtkommen.

Sie brauchen drei Tabelle wie.

Benutzer
Rolle
Permission

und setzen Beziehung wie unten

user has_one role 
role has_many permissions 
user has_many permissions through role 

oben beschriebene Szenario nur ein Beispiel Logik der Kern ist, hängt von Ihren Anforderungen variieren.

Hoffe, das wird Ihnen helfen.

Verwandte Themen