背景
我正在开发的Rails 4应用程序具有不同的API和Web注册逻辑,而且这种逻辑的一部分使得它们的集成非常困难。为此,我试图分离路由来处理继承,新的reCAPTCHA gem和新逻辑引起的问题。 (两个动作都按照各自的逻辑调用registrations#create
。)我已经解决了将这两个分开的大部分问题;然而,使路线工作也很困难。
我非常感谢任何帮助!
期望的结果:
我尝试使用Devise定义到自定义操作的路由,并阻止它创建默认路由。我让其中一个工作,但不是第二个。这是我的路线的摘录.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路由的自定义名称的文档,但没有找到自定义操作的文档。特别是在使用devise_for
。
总结:
users/registrations#create
路线users/registrations#custom_one
)user_registration
)答案 0 :(得分:1)
您可以使用:skip选项来设计devise_for:
devise_for :users, :skip => [:registrations] do
get "/admin" => "devise/registrations#new", :as => :new_user_registration
post "/admin" => "devise/registrations#create", :as => :user_registration
end