在使用Devise TestHelpers的文档中,它声明使用诸如......之类的行
@request.env["devise.mapping"] = Devise.mappings[:admin]
或
@request.env["devise.mapping"] = Devise.mappings[:user]
...让Devise知道要使用哪个资源或映射,因为控制器测试绕过routes.rb。我不清楚这些映射是什么。我没有在这方面设置任何特别的东西,我没有考虑具体的映射。我有用户,管理员,炼油厂和超级用户角色,la Rolify,我正在使用Cancan。
你能澄清一下吗? ......也许资源名称就是我们的意思?TIA。 -Matt
答案 0 :(得分:10)
自等待答案以来,我的研究似乎表明文档中指出的映射实际上是指Devise附加的资源。
以下是我的推测,但似乎有效,并且它同意我对代码的扫描。 例如,如果您只有一个名为User的资源,您已使用Devise进行身份验证,则只需在控制器规范设置中使用以下内容:
@request.env["devise.mapping"] = Devise.mappings[:user]
但是,如果您要对多个模型进行身份验证,比如用户和管理员,则需要分别使用以下内容。
@request.env["devise.mapping"] = Devise.mappings[:user]
和
@request.env["devise.mapping"] = Devise.mappings[:admin]
如果您有更好的意见,请随时更新此问题/答案。