Rails:将设计路线放入命名空间后,模型名称将以命名空间为前缀。如何删除?

我在我的Rails RESTFul API服务中使用devise进行身份验证。Devise使我可以使用[POST] http://domain/usersform_data创建一个新用户

[user]password = 123
[user]email = [email protected]
[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

控制器的文件结构如下所示。

.
├── 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 = [email protected]
[api_v1_user]password_confirmation = 123

我不希望模型名称(即user)以api_v1_作为前缀因为如果有一天我将api版本切换到v2,那么我必须更新所有客户端API调用!

有任何想法吗?

Bachan Smruty

您可以在路线中尝试以下方法

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章