Die Rails Way - Namespaces
-
02-07-2019 - |
Frage
Ich habe eine Frage zu, wie etwas „The Rails Way“ zu tun. Bei einer Anwendung, die eine öffentlich zugängliche Seite hat und ein Admin-Interface, was der allgemeine Konsens in der Rails-Community ist, wie es zu tun?
Namespaces, Subdomains oder verzichten sie ganz?
Lösung
Es gibt keinen wirklichen „Rails Weg“ für die Admin-Schnittstellen, eigentlich - Sie jede mögliche Lösung in einer Reihe von Anwendungen zu finden. DHH hat angedeutet, dass er Namespaces vorzieht (mit HTTP-Basic-Authentifizierung), aber das hat eine einfache Implikation bleibt und nicht einen der offizielle Rails Meinungen.
Das heißt, ich habe in letzter Zeit mit diesem Ansatz guten Erfolg gefunden (Namespacing + HTTP Basic). Es sieht wie folgt aus:
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
Die bedingte auf authenticate_or_request_with_http_basic
löst die HTTP Basic Auth im Produktionsmodus oder wenn Sie ?admin_http=true
an jede URL anhängen, so dass Sie es in Ihre Funktionstests testen und durch manuelles Aktualisieren der URL, wie Sie Ihre Entwicklung vor Ort zu sehen.
Andere Tipps
In einigen kleineren Anwendungen Ich glaube nicht, dass Sie das Admin-Interface trennen müssen. Verwenden Sie einfach die normale Schnittstelle und fügen Admin-Funktionen für eingeloggte Benutzer.
Bei größeren Projekten, würde ich mit einem Namespace gehen. Unter Verwendung einer Sub-Domain aus irgendeinem Grund für mich fühlt sich nicht richtig.
Ich fragte eine ähnliche Frage. Backend-Administration in Schienen . Eine der Antworten erwähnt Namespaces und das ist, was ich umgesetzt werden.
Vielen Dank an alle, die meine Frage beantwortet. Sieht aus wie der Konsens Namensraum verwenden, wenn Sie möchten, da es keine DHH Rails Way Ansatz gefördert. :)
Nochmals vielen Dank alle!
Sein sicherlich spät für eine Antwort, aber ich brauchte wirklich eine Antwort auf diese Frage: Wie leicht Admin-Bereiche tun
Hier ist, was kann in diesen Tagen verwendet werden: Aktive Admin , mit great intro Ryan Bates.