7

Devise TestHelpers を使用するためのドキュメントでは、次のような行を使用するように記載されています...

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

また

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

...コントローラーテストがroutes.rbをバイパスするため、どのリソースまたはマッピングを使用するかをDeviseに知らせます。これらのマッピングが何であるかは明確ではありません。この点に関して特別なことは何も設定していませんし、特定のマッピングを念頭に置いているわけでもありません。私はユーザー、管理者、リファイナリー、スーパーユーザーの役割を持っており、Rolify のように Cancan を使用しています。

明確にできますか?...おそらく、リソース名は私たちが意図したものですか?

ティア。-マット

4

1 に答える 1

10

回答を待っているので、私の調査によると、ドキュメントに示されているマッピングは、Devise がアタッチされているリソースを実際に参照しているようです。

以下は私の推測ですが、動作しているように見え、私のコードのスキャンと一致しています。 たとえば、認証に Devise を使用した User というリソースが 1 つしかない場合は、コントローラー仕様のセットアップで次のものを使用するだけで済みます。

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

ただし、ユーザーと管理者など、認証対象のモデルが複数ある場合は、それぞれ次を使用する必要があります。

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

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

より良い情報があれば、この質問/回答を更新してください。

于 2013-02-21T19:52:14.453 に答える