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

时间:2013-02-21 19:52:14

标签: ruby-on-rails rspec devise

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

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

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

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

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

TIA。 -Matt

1 个答案:

答案 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]

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