我正在使用Devise进行身份验证。
我在Api命名空间中有一个自定义注册控制器,定义如下:
class Api::RegistrationsController < Devise::RegistrationsController
# ...
end
我的用户模型在Api名称空间之外定义如下:
class User < ActiveRecord::Base
# ...
end
在我的功能测试中,我在设置中添加以下行,以便Devise知道我们使用的是user
而不是api_user
:
@request.env["devise.mapping"] = Devise.mappings[:user]
它在我的测试中效果很好,但我不知道如何在现实世界中复制这种行为。
sign_up_params
方法在清理时会查找params['api_user']
而不是params['user']
。
关于我如何做到这一点的任何想法?
答案 0 :(得分:3)
我认为你仍然不需要解决方案,但我遇到了同样的问题并解决了它:
而不是
namespace :api do
devise_for :users
end
在你的config / routes.rb文件中,只需输入:
scope :api, module: :api do
devise_for :users
end
希望它能帮助其他人:D