Der beste Weg, beschränken Aktionen (Bearbeiten / Löschen) mit Ruby on Rails und Devise

StackOverflow https://stackoverflow.com/questions/3834321

  •  26-09-2019
  •  | 
  •  

Frage

Ich bin ziemlich neu in Ruby On Rails und jetzt habe ich eine einfache App tue. In dieser App kann der Benutzer viele Elemente erstellen und ich verwende devise für die Authentifizierung. Ofcourse ich sicherstellen möchten, dass Sie der Inhaber zu löschen, um Gegenstände (Mannschaften, Spieler usw.) und die Art, wie ich es jetzt tun sind, ist:

def destroy
    @team = Team.find(params[:id])
    if current_user.id == @team.user_id 
      @team.destroy    
      redirect_to(teams_url, :notice => 'The team was deleted.')
    else
      redirect_to root_path
    end      
end

Ist dies der beste Weg? Ich dachte über ein Verfahren, in dem Modell setzen, aber ich bin nicht sicher, kann ich current_user von dort zugreifen. Ich war auch über einen before_filer denken, so etwas wie:

before_filter :check_ownership, :only => [:destroy, :update]

ich, dass Fall und wenn ich Code soll nur eine Methode für alle Objekte (alle Objekte dies ein „user_id“ -Feld haben bezieht)

War es hilfreich?

Lösung

In meiner Anwendung Controller ich gesagt:

before_filter :authorize

def authorize
  false # Or use code here to check if user is admin or not
end

Dann überschreiben ich die authorise Methode in meinem eigentlichen Controller Zugriff auf verschiedene Aktionen zu ermöglichen.

Andere Tipps

Sie sind für eine Autorisierungslösung auf Ihre Authentifizierung suchen (devise)

Sie können nicht aktuelle Benutzer in dem Modell nicht zugreifen. Ich habe ziemlich viel Erfolg hatte mit Makandra Aegis für die Zulassung . Es ermöglicht Ihnen, Rollen Berechtigungen für jede Rolle zugeschrieben angeben zu erstellen. Die Dokumente sind ziemlich gut und ich weiß, es funktioniert gut mit Devise, es ist ziemlich Agnostiker ist so, ich habe es auch mit Abstand verwendet haben. Es geht auch eine implizite „current_user“, um Ihre Berechtigungen so können Sie festlegen und überprüfen, ob Ihre aktuellen Benutzer geeignete Maßnahmen ergreifen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top