2008-09-23 63 views
30

我有一個關於如何做某些事情的問題「The Rails Way」。通過一個具有公共端和管理界面的應用程序,Rails社區的普遍共識是如何實現的?The Rails Way - Namespaces

命名空間,子域名或完全放棄它們?

回答

40

管理界面沒有真正的「Rails方式」,實際上 - 您可以在許多應用程序中找到所有可能的解決方案。 DHH暗示他更喜歡名稱空間(使用HTTP基本認證),但這仍然是一個簡單的含義,而不是官方的Rails觀點之一。

這就是說,我最近發現這種方法取得了很大的成功(namespacing + HTTP Basic)。它看起來像這樣:

的routes.rb:

map.namespace :admin do |admin| 
    admin.resources :users 
    admin.resources :posts 
end 

管理/ users_controller.rb:

class Admin::UsersController < ApplicationController 
    before_filter :admin_required 
    # ... 
end 

application.rb中

class ApplicationController < ActionController::Base 
    # ... 

    protected 
    def admin_required 
    authenticate_or_request_with_http_basic do |user_name, password| 
     user_name == 'admin' && password == 's3cr3t' 
    end if RAILS_ENV == 'production' || params[:admin_http] 
    end 
end 

的條件上authenticate_or_request_with_http_basic觸發HTTP基本身份驗證在生產模式下或當您將?admin_http=true附加到任何URL時,所以您c在您的功能測試中進行測試,並在瀏覽開發網站時手動更新網址。

+2

我討厭這個。這些路由會得到如下這樣的尷尬名字:「new_admin_user_path」。這是管理員創建新用戶的操作,而不是創建新的管理員用戶。它應該被稱爲「admin_new_user_path」。醜陋。這讓我懷疑我是在用錯誤的東西來使用命名空間。 – hoff2 2013-04-20 19:55:18

5

在一些較小的應用程序中,我認爲您不需要分開管理界面。只需使用常規界面併爲登錄用戶添加管理功能即可。

在較大的項目中,我會使用命名空間。出於某種原因,使用子域名對我來說並不合適。

0

感謝大家回答我的問題。看起來共識是如果你想使用命名空間,因爲沒有DHH贊助的Rails Way方法。 :)

再次,謝謝所有!

0

它肯定遲到了答覆,但我真的需要對這個問題的答案:如何輕鬆地管理區域?

以下是這些天可以使用的:Active Admin,與Ryan Bates's great intro

相關問題