2016-07-31 8 views
-1

Ich habe ein Benutzermodell, das ein Feld hat, das Admin ist. Dieses Feld ist ein boolescher Wert. Ich möchte nur einen Benutzer, der ein Administrator (Admin-Feld = true) ist, um eine "Season" erstellen zu können. Wie um alles in der Welt würde ich das auf Schienen machen? Ich weiß nicht einmal, wo ich anfangen soll. Ich nehme an, dass ich in meinem Application Controller "current_user_admin" definieren könnte und meiner Ansicht nach "current_user_admin?" um den Link "create season" anzuzeigen. Aber was mache ich in dem Modell?Aktuelle Benutzer "Admin" Attribut aus der Datenbank

I current_user tun haben als solche in meinem application_controller definiert:

@current_user ||=User.find_by id: session[:user_id] if session[:user_id] 

Werde ich den richtigen Weg nach unten? Jede Anleitung wird geschätzt!

+1

können Sie '@ current_user.admin verwenden' in Ihrem Controller und Ansichten für jede Aktion, die ein angemeldet gewährleistet? in Benutzer (Sitzung) ist vorhanden. Wenn Sie nicht sagen können, ob ein Benutzer anwesend ist, können Sie stattdessen '@ current_user.try (: admin?)' 'Verwenden. Ein anderer gängiger Ansatz besteht darin, ein Gastbenutzermodell zu definieren, das standardmäßig zugewiesen oder durch einen bestimmten Benutzer ersetzt wird, wenn er angemeldet ist. – unused

+0

Das hat funktioniert !! Wow, das war viel einfacher als ich dachte! Vielen Dank! – Blogger11

Antwort

0

würde ich nur erlauben Benutzer zu laden, die die admin Flagge auf Routen wie die gesetzt haben:

@current_admin ||= User.find_by(
    id: session[:user_id], admin: true 
) if session[:user_id] 
+0

Das ist ein guter Punkt. In meinen Routen habe ich Ressourcen: Jahreszeiten machen Ressourcen: Tanzkurse enden. Ich möchte keine neuen Saisons laden, es sei denn, Sie haben diese Admin-Flagge. Wo würde ich das Protokoll, das du eingefügt hast, nicht einfügen? Jahreszeiten-Controller? – Blogger11

Verwandte Themen