2016-12-09 3 views
1

Ich folgte Rolify Tutorial gelernt einige grundlegende Verwendungen. https://github.com/RolifyCommunity/rolify/wiki/Devise---CanCanCan---rolify-TutorialRails: wie Rollen dynamisch zu Rolify erstellt werden

Für jetzt die einzige Möglichkeit, ich kann Rolle erstellen ist etwas wie user.add_role "admin" in der Konsole. Ich möchte Rollen erstellen, indem ich die Aktionen der Ressourcen hinzufüge, dann kann der Benutzer des Benutzers Rollen den Benutzern zuweisen. Ich weiß nicht, wie ich das erreichen soll, ich habe einen Entwurf gemacht, um meine Absicht zu zeigen. Jeder könnte mir ein paar Ideen geben, um das zu machen?

enter image description here

Antwort

1

ein Modell erstellen:

class Role < ActiveRecord::Base 
    has_and_belongs_to_many :users, :join_table => :users_roles 
    belongs_to :resource, :polymorphic => true 

    validates :resource_type, 
      :inclusion => { :in => Rolify.resource_types }, 
      :allow_nil => true 
    scopify 
end 

dieses Modell als reguläre in Form verwenden. Auf diese Weise können Sie neue Rollen erstellen.

Wenn Sie Rollen über das Benutzermodell hinzufügen möchten, z. Drop-Down-Auswahl, schnappen Sie sich Roles.all und übergeben Sie es an Ihre Auswahl.

+0

Warum lassen Sie Nil für den Ressourcentyp? Wenn Ihre Rolle nicht mit einer Ressource verknüpft ist, sollte sie nicht gültig sein. (?) – theDrifter

+0

Dieser Modellcode ist eigentlich das, was in rolify gem ist, also ist 'allow_nil' wahrscheinlich intern durch rolify notwendig. Sie können dieses Modell sogar nicht definieren. Aber Sie sollten es nur tun, um es besser zu kontrollieren, um zu wissen, "dass es da ist", und für die spätere Logik, die Sie potentiell auf Rolle implementieren müssen, damit Sie wissen, wo Sie es hinzufügen können – ClassyPimp

Verwandte Themen