【发布时间】:2016-09-17 10:07:33
【问题描述】:
背景:
我正在开发的 Rails 4 应用程序有不同的 API 和 Web 注册逻辑,其中一部分逻辑使它们的集成变得极其困难。为此,我试图分离处理由继承、新的 reCAPTCHA gem 和新逻辑引起的问题的路线。 (这两个动作都在各自的逻辑之后调用registrations#create。)我已经解决了将这两者分开所产生的大部分问题;然而,事实证明,让路线正常运行也很困难。
非常感谢任何帮助!
期望的结果:
我正在尝试使用 Devise 定义到自定义操作的路由,并阻止它创建默认路由。我已经让其中一个工作,但不是第二个。这是我的 routes.rb 的摘录:
Registry::Application.routes.draw do
devise_for :user,
controllers: {
passwords: 'users/passwords',
sessions: 'users/sessions',
registrations: 'users/registrations'
}
devise_scope :user do
post 'users', to: 'users/registrations#custom_one'
end
# ...
namespace :api do
namespace :v1 do
# ...
devise_scope :user do
post 'users', to: 'registrations#custom_two'
end
end
end
end
问题:
问题在于这段代码生成了两条几乎相同的路线。摘自rake routes:
user_registration POST /users(.:format) users/registrations#create
users POST /users(.:format) users/registrations#custom_one
api_v1_users POST /api/v1/users(.:format) api/v1/registrations#custom_two
我还希望自定义路由具有正确的前缀/路由名称 (user_registration),尽管我无法做到这一点。
我找到了大量关于设计路线的自定义名称的文档,但没有找到自定义操作的文档。尤其是在使用devise_for 时。
总结一下:
- 我需要禁用默认的
users/registrations#create路由 - 并指定自定义操作的路由 (
users/registrations#custom_one) - 使用正确的前缀/名称 (
user_registration)
希望尽可能优雅,因为我宁愿避免单独指定每条路线。
【问题讨论】:
标签: ruby-on-rails ruby devise routes