2013-02-21 3 views
7

In der Dokumentation für die Nutzung der Devise TestHelpers es heißt Linien zu verwenden, wie ...Devise :: TestHelpers docs unklar auf Devise.mappings [: Mapping] Nutzung

@request.env["devise.mapping"] = Devise.mappings[:admin] 

oder

@request.env["devise.mapping"] = Devise.mappings[:user] 

... um Devise mitzuteilen, welche Ressource oder Zuordnung zu verwenden ist, da die Controller-Tests route.rb umgehen. Ich weiß nicht genau, was diese Zuordnungen sind. Ich habe in dieser Hinsicht nichts Besonderes eingerichtet, und ich habe keine spezifische Zuordnung im Sinn. Ich habe Benutzer-, Admin-, Raffinerie- und Superuser-Rollen, a la Rolify, und ich benutze Cancan für seine Fähigkeiten.

Können Sie klären? ... vielleicht ist der Ressourcenname was wir gemeint haben?

TIA. -Matt

Antwort

9

Seit dem Warten auf eine Antwort scheint meine Forschung darauf hinzuweisen, dass die in der Dokumentation angegebene Zuordnung sich tatsächlich auf die Ressource bezieht, an die Devise angehängt ist.

Folgendes ist meinerseits spekulativ, aber es scheint zu funktionieren, und es stimmt mit meinem Scan des Codes überein. Zum Beispiel, wenn Sie nur eine Ressource namens Benutzer haben haben Sie Devise für die Authentifizierung verwendet wird, würden Sie nur die folgenden in Ihrem Controller spec Setup verwenden müssen:

@request.env["devise.mapping"] = Devise.mappings[:user] 

Wenn Sie jedoch mehrere Modelle haben Sie authentifizieren, sagen Benutzer und Admin, müssten Sie jeweils folgendes verwenden.

@request.env["devise.mapping"] = Devise.mappings[:user] 

und

@request.env["devise.mapping"] = Devise.mappings[:admin] 

Bitte fühlen Sie sich frei auf diese Frage/Antwort zu aktualisieren, wenn Sie eine besseren Eingang.

+0

Sollte als die richtige Antwort markiert sein; Es folgt den Dokumenten. – jackyalcine