2016-04-06 4 views
0

Ich habe 2 Arten von Benutzern in einer App, die ich gerade abgeholt habe, die ich verbessern muss.Was ist der Weg von Rails, dies zu tun - geteilte Controller/Ansichten oder getrennt?

Admins, die alles kann

RoomAdmins, , die nur etwas mit ihrem Zimmer zu tun verwalten können - wie Eltern geben, die zum Raum gehören.

Zum Beispiel RoomAdmins, wenn sie sich anmelden können Parents für ihre Zimmer CRUD (für die es bereits eine RoomAdmin/ParentsController).

Jetzt muss ich Admins die Fähigkeit geben, Parents zu verwalten. Also sollte ich eine Admin/ParentsController erstellen und eine Reihe von Ansichten speziell für diese Anwendungsfälle erstellen?

Oder ist die ‚Rails‘ Konvention sowohl RoomAdmins und Admins Aktien, dass die Steuerung der RoomAdmin/ParentsController zu app/controllers und haben sich zu bewegen? Dies macht diesen Controller viel komplexer (und auch die Ansichten).

Beachten Sie, dass die Ansichten für jeden Admin-Typ leicht unterschiedlich sind und die Logik in jeder Aktion geringfügige Unterschiede aufweist, abhängig davon, wohin wir nach jeder Aktion weiterleiten, abhängig davon, ob ein Admin oder RoomAdmin handelt dieser Elternteil.

Welche Option ist die Rails-Konvention?

A - getrennte Steuerungen, separate Ansichten

B - ein Controller, ein Satz von Ansichten, komplexere Logik, um die Unterschiede zu behandeln?

EDIT

Es wird ein weitere Steigerung ich hier vergessen, die die Steuerung Vererbungskette ist, da beide Arten von Benutzern ein anderes Haupt-Layout und Anmelde-Prozess:

Alle Steuerungen zu tun mit Zimmern erben derzeit von RoomAdminsController.

Alle Controller, die mit Admin-Funktionen arbeiten, erben von AdminController.

So erbt RoomAdmin/ParentsController derzeit von RoomAdminsController.

Wenn ich es verschiebe, von wem erbt es dann? Agh!

+0

implementieren Sie die Logik für die Benutzer selbst? Oder etwas wie Devise benutzen? – JamesWatling

+0

Verschieben Sie ParentsController in App/Controller und erstellen Sie verschiedene Aktionen gemäß der Anforderung. Vermeiden Sie doppelten Code gemäß dem DRY-Prinzipal. –

+0

Ich glaube nicht, dass es eine Konvention dafür gibt. Ich würde einen Admin-Bereich haben und [cancancan] (https://github.com/CanCanCommunity/cancancan) verwenden, um die Logik zu behandeln, verschiedene Rollen für Benutzer anzugeben und ihnen Zugriff auf verschiedene Aktionen zu gewähren. –

Antwort

0

sich nach den Kommentaren ich glaube, die richtige Lösung ein Controller ist:

Ich denke, die Lösung ParentsController zu app/Controller & erstellen verschiedene Aktionen nach der Anforderung zu bewegen ist. Vermeiden Sie doppelten Code gemäß dem DRY-Prinzipal.

von @Chakreshwar

Ich glaube nicht, gibt es eine Konvention für diese. Ich würde einen Admin Bereich haben und Cancancan verwenden, um die Logik zu behandeln, verschiedene Rollen für Benutzer zu spezifizieren und ihnen Zugriff auf verschiedene Aktionen zu gewähren.

von @ j-dexx

Verwandte Themen