In meinem Projekt habe ich eine Benutzerklasse arbeiten mit Devise-Authentifizierung. Jedem Benutzer ist eine Rolle zugeordnet. Zum Beispiel ist ein Manager die Rolle # 1.Schienen: cancancan gem Zustand funktioniert nicht
Rolle ist eine Klasse und es gibt eine Zuordnung zwischen Rolle und Benutzer basierend auf role_id. So hat ein Manager eine role_id von 1.
Ich installierte cancancan gem, um die Erlaubnis für jeden Benutzer zu verwalten. Nur ein Manager kann ein Benutzerkonto erstellen. Also, ich dies in der Fähigkeit, Klasse schrieb:
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role_id == 1
can :manage, :user
else
cannot :manage, :user
end
end
In meinem Benutzer Controller, ich habe dies:
def new
@user = User.new
authorize! :manage, @user
end
Das Problem ist, wenn ich mit meinem Manager anmelden und versuchen, den Zugang zu neuer Benutzerseite Ich erhalte die Nachricht von cancancan, dass ich nicht die Erlaubnis habe, auf die Seite zuzugreifen.
Ich weiß nicht, ob es mein Zustand ist oder wenn ich versuche zu zugreifen user.role_id oder ...
Vielen Dank für Ihre Hilfe.
Siehe cancancan gem: https://github.com/CanCanCommunity/cancancan
Edit:
Es ist normal, wenn meine IDE sagt, dass es nicht current_user finden kann?
Auch, wenn Sie auf Github überprüfen, gibt es ein Beispiel dafür, wie die Verwendung cancancan:
Wie Sie sehen, gibt es eine @article nach der Leseberechtigung. Also ich glaube nicht, dass ich current_user statt @user
Schließlich setzen müssen:
Problem war die :user
, die nicht korrekt war. Wenn es ein Modell ist, müssen Sie zuerst einen Großbuchstaben für den Namen des Modells ohne ":" schreiben. Also statt :user
sollte es User
sein
Problem war der: Benutzer, der nicht korrekt war. Wenn es ein Modell ist, müssen Sie zuerst einen Großbuchstaben für den Namen des Modells ohne ":" schreiben. Also anstelle von: user sollte es User sein –