2013-10-25 88 views
1

我有基於用戶角色的一些「層次」一個非常複雜的Rails應用程序:集命名空間手動

  1. 管理員層
  2. 標籤層
  3. 帶層
  4. 範層

每個圖層/命名空間都有一些不同的佈局和渲染選項。這些差異非常大,我需要強烈區分它們中的每一個。

我可以使用路由的命名空間,並把在適當的URL命名空間每層這將是/admin/label/band/fan但我不希望它是在前端(以URL)和基於路由可見。然而,在這個解決方案中我喜歡的東西可能是將每個應用程序部件控制器,模型和視圖分離到圖層子文件夾中。

正確的層可以由current_user角色確定,所以如果我能夠在application_controller中手動設置所需的名稱空間,而不是使用路徑模式,那將是非常難的。

這樣的事情可能嗎?

+0

我認爲你的意思是「編程」而不是語用。如果是這樣,請糾正,其他人會更好地理解它。 – mjnissim

+0

哈哈是啊,對不起,這真的很愚蠢。因爲我不確定,現在我有點困惑,我會用'中立'一詞;)謝謝 – mbajur

+0

無論如何,我認爲它可以做到。嘗試自己做。 – mjnissim

回答

1

1)

這裏是範圍和角色(看守的寶石)有關路由這裏

scope module: lambda { |request| request.env['warden'].user.role } do 
resources :posts, :comments 
end 

更多信息爲例:Rails Routing

這個例子沒有處理時的情況用戶未登錄並且模塊不存在的情況。我不知道這是否是正確的道路,但它是一個解決方案。

2)

我有第二個想法是通過不同的模塊並不路線,而是利用ExhibitsStrategy pattern

我喜歡這個想法是,它是更面向對象,但也許少「Rails的方式」