2013-08-17 36 views
0

我想爲具有約束條件的相同設計模型/資源設置不同的路徑,但第一條路徑是在這種情況下應用「visitor」的路徑。是否有可能在具有約束條件的同一設計模型上有不同的路徑?

constraints(ValidSubdomainFrontend) do 
    devise_for :users, :path => "visitor", :path_names => { :sign_in => 'login', :sign_out => 'logout', :password => 'secret', :confirmation => 'verification', :unlock => 'unblock', :registration => 'register', :sign_up => 'cmon_let_me_in' } 
end 


constraints(ValidSubdomainAdmin) do 
    devise_for :users do 
     get 'users', :path => "admin", :to => 'site_backend#index', :as => :user_root # Rails 3 
    end 
    devise_for :users, :controllers => { :registrations => 'users' }, :path => "admin", :path_names => { :sign_in => 'login', :sign_out => 'logout', :password => 'secret', :confirmation => 'verification', :unlock => 'unblock', :registration => 'register', :sign_up => 'cmon_let_me_in' } 
end 

是否有可能在不同的約束條件下針對相同的資源設計不同的路徑?

正在使用的約束條件是:

class ValidSubdomainAdmin 
    def self.matches?(request) 
     request.subdomain.present? && 
     request.env['PATH_INFO'].start_with?('/admin') 
    end 
end 

class ValidSubdomainFrontend 
    def self.matches?(request) 
     request.subdomain.present? && 
     !request.env['PATH_INFO'].start_with?('/admin') 
    end 
end 

在所有這是可能的設計或這是一個錯誤?

回答

2

找到了解決這個問題的方法!

更多關於上下文,基本上需要在用戶可以登錄(到成員區域)和編輯他們的配置文件和其他成員/客戶端操作的前端具有類似/ visitor的東西。但我也想/管理員/編輯/作者可以登錄到(後端)管理儀表板/區域。這兩個區域使用相同的設計模型/資源(所以管理員也可以訪問成員區域)。作爲一個方面說明,目前我正在使用CanCan權限來阻止成員訪問管理區域。

我不得不更換管理方面的約束爲:

constraints(ValidSubdomainAdmin) do 
    devise_scope :user do 
     #root :to => "devise/registrations#new" 
     get "admin/" => "admin#index" 
     post 'admin/' => 'devise/registrations#new', :as => :new_admin_registration 
     match 'admin/', :to => 'admin#index'  
     get "admin/edit" => "devise/registrations#edit" 
     match 'admin/edit', :to => 'devise/registrations#edit' 
     get "admin/login" => "devise/sessions#new", :as => :new_admin_session 
     match 'admin/login', :to => 'devise/sessions#new' 
     get "admin/logout" => "devise/sessions#destroy", :as => 'destroy_admin_session' 
     match 'admin/logout', :to => 'devise/sessions#destroy' 
     post "admin/password" => "devise/passwords#create" 
     get "admin/password/new" => "devise/passwords#new", :as => 'new_admin_password' 
     get "admin/password/edit" => "devise/passwords#edit" 
     put "admin/password" => "devise/passwords#update" 
    end 
end 

我也更新的意見/管理/用戶(正在使用的色器件在上管理區),以使用新的管理制定路徑。

非常感謝José Valim

相關問題