2016-07-30 23 views
0

Ich habe Rails 4 Anwendung mit Benutzer, Rolle, Berechtigungen mit Pundit gem. Implementiert. Ich habe 3 Modelle Benutzer, Rolle, roles_users, da ich viele_to_many Beziehung zwischen Benutzer und Rolle habe. Ich möchte die Benutzerrollen bearbeiten.Rails 4 - Benutzerberechtigungen aktualisieren

class User 
    has_and_belongs_to_many :roles 
end 

class role 
    has_and_belongs_to_many :users 
end 

Eine dritte Tabelle roles_users, die user_id und role_id speichert.

Angenommen, ich möchte eine Benutzerrolle bearbeiten, welchen Ansatz sollte ich folgen. Sollte ich die vorhandenen Datensätze aus der dritten Tabelle, d. H. Rollen_benutzer, löschen und dann einen neuen Datensatz erstellen, der die Rolle anzeigt. Bitte vorschlagen.

Antwort

2

Nicht sicher, ob Sie noch daran arbeiten oder was Sie gerade erreichen möchten, aber eine gute Möglichkeit, mit pandit zu arbeiten, besteht darin, mit Benutzeroberflächen zu arbeiten und Benutzerkonten zu erstellen. Der Administrator kann die Rolle eines bestimmten Benutzers in die Rolle ändern, die Sie als Option haben (z. B. Benutzer, vip, Moderator, Editor, Administrator usw.). Der Himmel ist die Grenze dafür, wie komplex Ihre App mit mehreren Rollen sein soll. Die Verwendung von „Enum“ in Ihrem Benutzermodell wird dazu beitragen, Ihre Rolle Optionen führen:

class User < ActiveRecord::Base 

    enum role: [:user, :vip, :admin] 
    after_initialize :set_default_role, :if => :new_record? 

    def set_default_role 
    self.role ||= :user 
    end 

    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

end 

diese Weise können Sie die Standardrolle eines neuen Benutzers einstellen kann ein normaler Benutzer sein, und dann kann der Administrator den Benutzer aktualisieren, um welche Rolle der neue Benutzer auch spielen sollte. Dies sollte in mehrere Anwendungen integriert werden können, wenn Sie eine komplexere App mit mehreren Firmen/Gruppen wünschen. Pundit-Richtlinien und Bereiche werden dann ins Spiel kommen, um zu bestimmen, wer die Berechtigung hat, bestimmte Aktionen in Ihrer App auszuführen. Zum Beispiel:

  • ein Admin eine Liste von Benutzern
  • ein Admin
  • ein Admin und Redakteur kann, aktualisieren Post Rolle eines Benutzers sehen
  • einen gewöhnlichen ein Blog, löschen erstellen, bearbeiten kann sich ändern Benutzer können eine Liste der Benutzer
  • ein normaler Benutzer nicht ändern kann ihre Rolle sehen
  • einen gewöhnlichen Benutzer nicht (oder bearbeiten) eines anderen Benutzers Profil
  • ein ordinar sehen y Benutzer können sehen (und bearbeitet) ihr eigenes Benutzerprofil
  • ein normaler Benutzer kann nicht bearbeiten, löschen oder aktualisieren, eine Blog-Post
  • ein normaler Benutzer kann veröffentlichten Blog-Beiträge sieht

Eine große Ressource zu beginnen ist in der Rails-devise-pundit Beispielanwendung zu folgen, die Sie durch die Einrichtung von Dingen ziemlich gut mit Benutzerrollen gehen wird. Wenn Sie visuell sind, können Sie diesem YouTube-Video folgen: Rails Authorization with Pundit. Dieses Video ist großartig, wenn Sie mit rspec testen möchten, während Sie Ihre Benutzerrollen erstellen.

Hoffentlich steuert dies Sie in die richtige Richtung dessen, was Sie erreichen möchten.