2010-12-31 6 views
1

Ich benutze Devise, seit ich zu Rails 3 kam, das war um die erste oder zweite Beta, und jetzt brauche ich auch einige Rollen. Nach der Suche im Internet sah CanCan wie die beste Lösung aus. Aber ich bin unsicher, ob CanCan meine Bedürfnisse verwalten kann, wie ich einen Forum-Moderator, der das Thema bearbeiten/zerstören kann, aber der Benutzer, der das Thema erstellt hat, sollte auch in der Lage sein zu bearbeiten, also wie kann ich das tun?Rollen Autorisierung mit Rails 3 und Devise

+1

Was ist mit den Rollen in Devise, können Sie das überhaupt benutzen? Es gibt entweder die einfache Lösung 'admin_flag' oder die gesamte Objektroute für Rollen, die mehrere Rollen für denselben Benutzer zulässt. Alles auf der Devise Github-Website. Vielleicht haben sie das kürzlich hinzugefügt. CanCan kenne ich allerdings nicht. Vielleicht haben Sie eine Anforderung, die diese Option macht. –

Antwort

4

Basierend auf Ihrer kurzen Beschreibung oben, würde ich mir vorstellen, CanCan sollte in der Lage sein, mit Ihren Bedürfnissen umzugehen.

CanCan ist in erster Linie eine vereinfachte Syntax zur Zentralisierung von Autorisierungsregeln. Es bietet keine Rollen out-of-the-box. Die CanCan wiki enthält jedoch eine Reihe sehr nützlicher Links, einschließlich eines simple und eines more complex Ansatzes für die Implementierung von Rollen.

Ich habe es hilfreich gefunden, den Besitz direkt zu modellieren, anstatt zu versuchen, eine "Besitzer" -Rolle zu haben. So (vorausgesetzt, Sie verwenden das einfachere Rolle Schema oben) die Verwendung Fall, dass Sie oben beschreiben würde somit in Ihrer Fähigkeit Definition modelliert werden:

def initialize(user) 
    ... 
    can :manage, Topic if user.is? :moderator 
    can :manage, Topic { |topic| if (topic.user_id == user.id) } 
    ... 
end 

Hoffnung, das hilft.