2012-06-15 108 views
1

我有一個應用程序與多個用戶。每個用戶作爲理論角色(用戶,客戶等)。我爲每種用戶類型設計了一個視圖/控制器。設計基於角色的路由

我想能夠登錄每種類型的用戶做一個不同的根網址,並鎖定它們。

本來我打算在Devise中爲用戶添加一列,所以我可以區分用戶。我遇到的問題是如何在routes.rb中說if current_user.role ==「client」root:to =>'controller#index'

一旦他們登錄到頁面,我也想保留他們能夠訪問我的任何其他路徑,即:domain.com/calls domain.com/units

我一直在尋找康康運行旁邊的設計,但我不知道這是否是答案。

回答

0

而不是在路由中處理它,爲什麼不在ApplicationController中處理它?

#application_controller.rb 
before_filter :direct_to 

def direct_to 
    if current_user.role == "client" 
    redirect_to client_controller_path 
    # etc 
end 
+0

這是一個好主意,並會工作。將它們鎖定到該頁面並阻止它們進入到calls_path或units_path的最好方法是什麼? – nulltek

+0

如果你在應用程序控制器上每次調用時都這樣做,我不認爲這會是一個問題 – DVG

+0

我試過上面的代碼,它在一個重定向循環中結束。任何想法爲什麼?我把它放在應用程序控制器中,它重定向到我選擇的路徑,但顯示帶有Web請求重定向循環的空白頁面。 – nulltek