The Rails Way - Namespace
-
02-07-2019 - |
Domanda
Ho una domanda su come fare qualcosa " The Rails Way " ;. Con un'applicazione con un lato pubblico e un'interfaccia di amministrazione qual è il consenso generale nella comunità di Rails su come farlo?
Spazi dei nomi, sottodomini o rinunciarvi del tutto?
Soluzione
Non esiste un vero modo "Rails" " per le interfacce di amministrazione, in realtà - puoi trovare tutte le possibili soluzioni in una serie di applicazioni. DHH ha implicato che preferisce gli spazi dei nomi (con autenticazione HTTP di base), ma ciò è rimasto una semplice implicazione e non una delle opinioni ufficiali di Rails.
Detto questo, ho trovato di recente un buon successo con questo approccio (namespace + HTTP Basic). Sembra così:
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
Il condizionale su authenticate_or_request_with_http_basic
attiva l'autenticazione HTTP di base in modalità produzione o quando si aggiunge ? admin_http = true
a qualsiasi URL, in modo da poterlo testare nei test funzionali e aggiornando manualmente l'URL mentre navighi nel tuo sito di sviluppo.
Altri suggerimenti
In alcune applicazioni più piccole non credo sia necessario separare l'interfaccia di amministrazione. Basta utilizzare l'interfaccia normale e aggiungere la funzionalità di amministrazione per gli utenti che hanno effettuato l'accesso.
Nei progetti più grandi, andrei con uno spazio dei nomi. L'uso di un sottodominio non mi sembra giusto per qualche motivo.
Ho fatto una domanda in qualche modo simile. Amministrazione back-end nelle rotaie . Una delle risposte menzionava gli spazi dei nomi ed è quello che ho implementato.
Grazie a tutti coloro che hanno risposto alla mia domanda. Sembra che il consenso sia quello di utilizzare gli spazi dei nomi se lo si desidera in quanto non esiste un approccio Rails Way sponsorizzato da DHH. :)
Ancora una volta, grazie a tutti!
È sicuramente tardi per una risposta, ma avevo davvero bisogno di una risposta a questa domanda: come fare facilmente le aree di amministrazione?
Ecco cosa si può usare in questi giorni: Admin attivo , con La grande introduzione di Ryan Bates .