En realidad, no existe un verdadero "camino de rieles" para las interfaces de administración: puede encontrar todas las soluciones posibles en una serie de aplicaciones. DHH ha implicado que prefiere espacios de nombres (con autenticación HTTP básica), pero eso ha seguido siendo una simple implicación y no una de las opiniones oficiales de Rails.
Dicho esto, he encontrado un buen éxito con este enfoque últimamente (espacios de nombres + HTTP Básico). Se ve así:
routes.rb:
map.namespace :admin do |admin|
admin.resources :users
admin.resources :posts
end
admin/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
El condicionada a authenticate_or_request_with_http_basic
dispara el HTTP Autorización básica en modo de producción o cuando agrega ?admin_http=true
a cualquier URL, por lo que una prueba en sus pruebas funcionales y actualizando manualmente la URL mientras explora su sitio de desarrollo.
Odio esto. Las rutas obtienen nombres incómodos como este: "new_admin_user_path". Es una operación para que un administrador cree un nuevo usuario, no para crear un nuevo usuario administrador. Debería llamarse "admin_new_user_path". Feo. Me hace sospechar que estoy usando espacios de nombres para algo equivocado. – hoff2