2013-02-21 9 views
7

nella documentazione per l'utilizzo dei TestHelpers Devise si afferma di utilizzare linee come ...Devise :: TestHelpers documenti non chiari su Devise.mappings [: mappatura] utilizzo

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

o

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

... per consentire a Devise di sapere quale risorsa o mappatura utilizzare dal momento che il controllore verifica bypass route.rb. Non sono chiaro su cosa siano queste mappature. Non ho creato nulla di speciale in questo senso, e non ho in mente una mappatura specifica. Ho ruoli User, Admin, Refinery e Superuser, a la Rolify, e sto usando Cancan per le sue abilità.

Potete chiarire? ... forse il nome della risorsa è ciò che intendiamo noi?

TIA.

risposta

9

Dall'attesa di una risposta, la mia ricerca sembra indicare che la mappatura indicata nella documentazione si riferisce effettivamente alla risorsa a cui è collegato Devise.

In seguito è speculativo da parte mia, ma sembra funzionare, ed è d'accordo con la mia scansione del codice. Per esempio, se si dispone di una sola risorsa chiamata l'utente si è utilizzato Devise per l'autenticazione, si avrebbe solo bisogno di utilizzare il seguente nella configurazione del controller spec:

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

Tuttavia, se si dispone di più modelli che si sono per l'autenticazione, ad esempio Utente e Amministratore, è necessario utilizzare rispettivamente quanto segue.

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

e

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

Non esitate a aggiornerà questa domanda/risposta se si dispone meglio di ingresso.

+0

Dovrebbe essere contrassegnato come la risposta corretta; segue i documenti. – jackyalcine

Problemi correlati