Ответ 1
Нет реального "пути 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 Basic auth в производственном режиме или при добавлении ?admin_http=true
к любому URL-адресу, поэтому вы можете протестировать его в своих функциональных тестах и вручную обновить URL-адрес при просмотре сайта разработки.