Sie könnten:
script/generate controller admin/articles
Dann in Ihrer routes.rb Datei
map.resource :admin do |admin|
admin.resources :articles, :path_prefix => "admin", :name_prefix => "admin_", :controller => "admin/articles"
end
Sie dann den Index-URL für diese zugreifen können Bewahren Sie auch die Apps und Controller an ihren gewohnten Plätzen auf und verwenden Sie Rails-Filter, um den Zugriff zu kontrollieren, was ich denke, dass Sie hier suchen.
Wenn Sie das AWDWR Buch zur Hand haben, drehen sie auf Chap11 Aufgabe F Administrivia
- Grundsätzlich eine authorise Methode in app \ Controller definieren \ application.rb, die Autorisierung überprüft, leitet zur Login-Seite, wenn nicht angemeldet et.all
- Mark-Controller möchten Sie mit
before_filter
s Zugang zu
beschränken.
class AdminController < ApplicationController
before_filter :authorize
# ... the rest of the code
end
Dadurch werden alle Anrufe an Aktionen in Admincontroller definiert abzufangen und sie zwingen, über zu gehen autorisieren
Könnte das Routing komplizieren? Ich mag auch die Idee, separate Verzeichnisse zu haben, nur um die Dinge ordentlicher zu halten. – GeekJock
Überhaupt nicht. Die Schönheit ist, dass Sie nicht verschiedene Routen definieren (oder sogar durcheinander bringen) müssen. Alles geht über einen einzigen Pfad, das authorize before_filter stellt sicher, dass nur autorisierte Anfragen zu den geschützten Aktionen gelangen. Es ist ein "deklarativer" Ansatz. – Gishu
Dieser Ansatz ist in Ordnung, aber nicht immer angemessen, besonders wenn Sie ein fast CMS haben wollen wie Admin-Bereich im Gegensatz zu ein paar Admin-Ressourcen durch Ihre Anwendung verstreut. – nitecoder