На самом деле не существует настоящего «пути Rails» для интерфейсов администратора - вы можете найти любое возможное решение в ряде приложений. DHH подразумевает, что он предпочитает пространства имен (с аутентификацией HTTP Basic), но это остается простым следствием, а не одним из официальных мнений Rails.
Тем не менее, в последнее время я нашел хороший успех с этим подходом (пространство имен + 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-адресу, чтобы вы могли проверить его в своих функциональных тестах и обновив URL-адрес вручную при просмотре сайта разработки.