7

在使用 Devise TestHelpers 的文档中,它声明使用诸如...

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

或者

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

...让 Devise 知道要使用哪个资源或映射,因为控制器测试绕过 routes.rb。我不清楚这些映射是什么。在这方面我没有设置任何特殊的东西,我也没有想到具体的映射。我有用户、管理员、炼油厂和超级用户角色,一个 la Rolify,我使用 Cancan 是因为它的功能。

你能澄清一下吗?...也许资源名称就是我们的意思?

TIA。-马特

4

1 回答 1

10

由于等待答案,我的研究似乎表明文档中指示的映射实际上是指附加设计所针对的资源。

以下是我的推测,但它似乎有效,并且与我对代码的扫描一致。 例如,如果您只有一个名为 User 的资源,您已使用 Devise 进行身份验证,则只需在控制器规范设置中使用以下内容:

@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 回答