Devise :: TestHelpers文档在Devise.mappings [:mapping]用法上不清楚

Mat*_*own 7 rspec ruby-on-rails devise

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

@request.env["devise.mapping"] = Devise.mappings[:admin]
Run Code Online (Sandbox Code Playgroud)

要么

@request.env["devise.mapping"] = Devise.mappings[:user]
Run Code Online (Sandbox Code Playgroud)

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

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

TIA.-Matt

Mat*_*own 10

自从等待答案以来,我的研究似乎表明文档中指出的映射实际上是指Devise附加的资源.

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

@request.env["devise.mapping"] = Devise.mappings[:user]
Run Code Online (Sandbox Code Playgroud)

但是,如果您要对多个模型进行身份验证,例如User和Admin,则需要分别使用以下模型.

@request.env["devise.mapping"] = Devise.mappings[:user]
Run Code Online (Sandbox Code Playgroud)

@request.env["devise.mapping"] = Devise.mappings[:admin]
Run Code Online (Sandbox Code Playgroud)

如果您有更好的意见,请随时更新此问题/答案.