7 Stimmen

Rails beste Praxis für Backend-Admin-System-Setup?

Wir haben eine Website mit einer Backend-Verwaltungsschnittstelle und einem Frontend, das unsere Informationen anzeigt. Wir verwenden Devise für die sichere Authentifizierung.

Das Backend sollte eine normale CRUD-Bearbeitung unserer Modellobjekte ermöglichen. Auch die Ansichten und das Layout sind völlig anders als im Frontend. Was ist die beste Praxis für die Umsetzung dieser in Rails 3?

Unsere beiden Ansätze sind:

  1. Ein Admin-View-Ordner beherbergt den gesamten View-spezifischen Code, während ein Admin-Ordner im Controller-Ordner alle Controller beherbergt, die den Admin-spezifischen Zugriff steuern.
  2. Ein System mit bedingter Logik mit einem Satz von Ansichten und Controllern, mit if-Anweisungen, die prüfen, ob der Benutzer im Admin-Modus ist oder nicht.

Welche Methode ist empfehlenswerter, oder gibt es einen anderen Ansatz, den wir übersehen haben, lassen Sie es mich bitte wissen.

15voto

dombesz Punkte 7867

Die erste Lösung ist besser, aber für diese Fälle wurde die namespaces und die beste Praxis ist es, Namespaces zu verwenden, wenn Sie eine relevante Unterscheidung zwischen Benutzerseite und Verwaltungsbereich benötigen. Mehr darüber lesen aquí

Ihre Verzeichnisstruktur sollte folgendermaßen aussehen:

controllers/
     |--admin/
        |--posts_controller.rb

In Ihren Routen legen Sie alles, was Sie brauchen, in den Admin-Namensraum:

namespace :admin do
  resources :posts, :comments
end

Ihre Steuergeräte sollten über eine admin und ein Controller im Administrationsbereich wird wie folgt aussehen:

class Admin::PostsController < ApplicationController
end

Sie sollten auch eine admin Ordner in Ihren Ansichten, in dem Sie die jeweiligen Ansichten ablegen:

views/
   |--admin/
        |--posts/
             |--index.html.erb
             |--...

Sie können Ihre Modelle auch mit einem Namensraum versehen, aber das hängt von Ihren Bedürfnissen ab. Es ist gut, wenn Sie verschiedene Modelle mit demselben Namen haben müssen. Zum Beispiel, wenn Sie verschiedene Tabellen für die Admin-Benutzer und verschiedene Tabellen für normale Benutzer benötigen. Persönlich würde ich kein Namespacing für Modelle verwenden, nur in sehr begründeten Fällen.

Die zweite Option kann meiner Meinung nach viel Kopfzerbrechen bereiten, da Sie sich in den if-Anweisungen verlieren werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X