我在我的 Rails RESTFul API 服务中使用 devise 进行身份验证。 Devise 使我能够使用 [POST] http://domain/users
和 form_data 创建一个新用户:
[user]password = 123
[user]email = foo@bar.zoo
[user]password_confirmation = 123
然后我将 devise_for
放在这样的命名空间中
namespace :api do
namespace :v1 do
devise_for :users,
controllers: {
:registrations => 'api/v1/registrations',
:sessions => 'api/v1/sessions',
:passwords => 'api/v1/passwords'
}
end
end
Controller 的文件结构如下所示。
.
├── api
│ └── v1
│ ├── passwords_controller.rb
│ ├── registrations_controller.rb
│ └── sessions_controller.rb
├── application_controller.rb
进行此更改后,我应该使用 [POST] http://domain/api/v1/users
创建一个新用户,但使用以下 form_data
[api_v1_user]password = 123
[api_v1_user]email = foo@bar.zoo
[api_v1_user]password_confirmation = 123
我不希望模型名称(即 user)以 api_v1_ 为前缀。因为如果有一天我将我的 api 版本切换到 v2,那么我必须更新我所有的客户端 API 调用!
有什么想法吗?
最佳答案
您可以在您的 route 尝试以下内容
namespace :api, as: nil do
namespace :v1, as: nil do |version|
devise_for :users,
controllers: {
:registrations => "api/#{version}/registrations",
:sessions => "api/#{version}/sessions",
:passwords => "api/#{version}/passwords"
}
end
end
关于ruby-on-rails - Rails : After putting devise routes in namespace, 模型名称以命名空间为前缀。如何删除它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26138266/