自定义设计资源名称

时间:2014-03-06 09:55:05

标签: ruby-on-rails devise

我正在使用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']

关于我如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:3)

我认为你仍然不需要解决方案,但我遇到了同样的问题并解决了它:

而不是

namespace :api do 
  devise_for :users
end
在你的config / routes.rb文件中

,只需输入:

scope :api, module: :api do 
  devise_for :users
end

希望它能帮助其他人:D