2010-04-07 59 views
5

在Rails應用程序中創建管理區域的典型格式/結構是什麼?Rails中的建築管理區域 - 一般問題

  • 你如何處理當模特的資源可用於公衆和管理情況:

    具體來說,我在這些議題附近很爲難?即用戶模型,任何人都可以創建用戶,登錄等,但只有管理員可以查看用戶,刪除/更新他們等。

  • 什麼是路由的正確約定?
  • 一個結構控制器如何?
  • 重複的控制器是否認爲可以?即管理員版本和非管理員版本?

謝謝!

回答

4

你可以有2個控制器,一個爲公共部分和其他的管理和使用的管理命名空間:

map.namespace(:admin, :path_prefix => 'settings', :name_prefix => 'admin_') do |admin| 
    admin.resources :users 
end 

這將映射到/設置/用戶和控制器必須是前綴Admin::Admin::UsersController,此外控制器文件必須放在admin文件夾下的應用程序/控制器 dir。

  • 是的,如果他們讓你的代碼更清晰,將是一個很大的混亂舉例來說,如果你有對管理和市民的意見相同的控制器,然後有呈現,如果管理員或普通用戶基於不同的視圖模板訪問它們。 也see here for more information
+0

Damien,謝謝你的回答。 關於第二點RE路由的問題。這會如何影響您對控制器生成器的使用? AND 你有腳手架嗎? – 2010-04-07 22:09:23

+1

您可以將控制器生成作爲範圍......'script/generate controller admin/users'。 – 2010-04-08 02:31:19

0

除了建立在我的路線管理員命名空間,我用的是declarative_authorization插件,它可以讓你的角色定義爲用戶和定義的控制器操作的訪問控制以及模型屬性。如果用戶嘗試訪問沒有權限的操作,該插件將重定向他們的請求。處理它的方法非常簡單,有助於提供細粒度的安全性。

Rails生態系統中還有其他幾個插件提供類似的功能。

2

有一系列Railscasts顯示了一種避免在視圖和控制器中使用條件的獨立管理區域的方法:Where Administration Goes

這可能不適合您的用例,但值得一看。