我想用设计有两个命名空间:一个API命名空间,默认的命名空间,但是这两个似乎是相互矛盾的,当用户试图在含义上签字,取其命名空间参考设计第一最终成为最后的重定向的地方。 例如:如果我尝试创建在默认的命名空间,将用户会话道路上失败,一个新的会话,然后尝试创建API / V1会话路径上的会话。
如何独立做出两个行为?
他们都引用用户对象。 该user_sessions控制器默认命名空间是“user_sessions”。 所述user_sessions控制器为API / V1命名空间是 '/ API / V1 / user_sessions'
---- ROUTES.RB -------
MySite::Application.routes.draw do
namespace :api do
namespace :v1 do
devise_for :users,:controllers => { :sessions => "api/v1/
user_sessions",:registrations=>"users" }
......
end
end
devise_for :users,:controllers => { :sessions =>"user_sessions",:registrations=>"users" } do
post 'users/sign_in' => 'user_sessions#create', :as => :user_session
get 'users/sign_in' => 'user_sessions#new', :as => :new_user_session
get 'users/sign_up' => 'user_sessions#new', :as => :new_user_session
match 'users/sign_out' => 'user_sessions#destroy', :as => :destroy_user_session
<.....>
end
-----默认命名空间USER_SESSIONS_CONTROLLER -----
class UserSessionsController < Devise::SessionsController
....
end
----
API NAMESPACE USER_SESSIONS_CONTROLLER ----(这正好下面标明我的自定义设计的基本控制器)
class Api::V1::UserSessionsController < Api::V1::DeviseBaseController
...
end
---- API NAMESPACE CUSTOM制定基本控制器----
class Api::V1::DeviseBaseController < Devise::SessionsController
respond_to :json
end