【发布时间】:2016-11-13 17:16:26
【问题描述】:
我有一个 Rails api 应用程序,我在其中使用 Devise gem 进行用户管理。我在设计 gem 上创建了一个用户模型。之后,我注意到rake routescommand 中列出了两条相同的路线。我希望POST (/users) 先调用api/v1/users#create 操作,然后再调用devise/registrations#create。
user_registration POST /users(.:format) devise/registrations#create
api_users POST /users(.:format) api/v1/users#create {:format=>:json}
当我使用 users_controller_spec 文件测试 POST (/users) 时,会调用 api/v1/users#create 操作。但是,当我使用 POSTMAN 执行 POST (/users) 时,日志表明改为调用 devise/registrations#createaction。
如何更正此问题,以便我使用 POSTMAN 或 curl 执行的 POST (/users) 首先调用 api/v1/users#create 来创建用户模型,然后调用 devise/registrations#create 来注册用户?
我不是 100% 确定设计是如何工作的,所以这里的任何帮助都会有所帮助。
这是我的config/routes.rb
Rails.application.routes.draw do
devise_for :users
# Api definition
namespace :api, defaults: { format: :json }, path: '/' do
scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do
# We are going to list our resources here
resources :users, only: [:show, :create, :update, :destroy]
resources :sessions, only: [:create, :destroy]
end
end
end
【问题讨论】:
-
请您发布您的
config/routes.rb文件好吗? -
请提供您的 rails 版本,也只是想知道您对这种方法的请求类型,例如 json、html 等,请同时发布您的路线文件@millin
-
我在做 json 请求,因为我可以创建一个 API @ManojMenon
-
@EddeAlmeida 我已经更新了问题并包括了我的
config/routes.rb -
您已经添加了两次用户资源。 devise_for :用户和资源:用户,仅:[:show,:create,:update,:destroy]
标签: ruby-on-rails ruby curl devise ruby-on-rails-5