我有一個關於如何做某些事情的問題「The Rails Way」。通過一個具有公共端和管理界面的應用程序,Rails社區的普遍共識是如何實現的?The Rails Way - Namespaces
命名空間,子域名或完全放棄它們?
我有一個關於如何做某些事情的問題「The Rails Way」。通過一個具有公共端和管理界面的應用程序,Rails社區的普遍共識是如何實現的?The Rails Way - Namespaces
命名空間,子域名或完全放棄它們?
管理界面沒有真正的「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在您的功能測試中進行測試,並在瀏覽開發網站時手動更新網址。
在一些較小的應用程序中,我認爲您不需要分開管理界面。只需使用常規界面併爲登錄用戶添加管理功能即可。
在較大的項目中,我會使用命名空間。出於某種原因,使用子域名對我來說並不合適。
我問了一個類似的問題。 Backend Administration in rails。其中一個答案提到了命名空間,那就是我實現的。
感謝大家回答我的問題。看起來共識是如果你想使用命名空間,因爲沒有DHH贊助的Rails Way方法。 :)
再次,謝謝所有!
它肯定遲到了答覆,但我真的需要對這個問題的答案:如何輕鬆地管理區域?
以下是這些天可以使用的:Active Admin,與Ryan Bates's great intro。
我討厭這個。這些路由會得到如下這樣的尷尬名字:「new_admin_user_path」。這是管理員創建新用戶的操作,而不是創建新的管理員用戶。它應該被稱爲「admin_new_user_path」。醜陋。這讓我懷疑我是在用錯誤的東西來使用命名空間。 – hoff2 2013-04-20 19:55:18