2016-05-12 5 views
0

Ich modelliere eine Trainer/Mitglied-Beziehung auf Ruby on Rails und ich frage mich, was der beste Weg ist, diese Beziehung zu modellieren.Richtige Methode zum Einrichten einer Trainer/Mitglied-Beziehung mit einer Entität

Derzeit habe ich nur Rollen für eine Benutzerklasse definiert, die Rolify für den Zugriff auf Ansichten und Controller verwendet.

Trainer und Mitglieder sind Benutzer.

Soll ich eine rekursive Beziehung zwischen dem Benutzermodell erstellen oder soll ich ein Trainer- und ein Mitgliedsmodell speziell auf Rails erstellen und Hierarchie zwischen ihnen einrichten und die Beziehung zwischen den untergeordneten Modellen erstellen?

Antwort

0

Ich würde zwei verschiedene Modelle für Trainer und Mitglieder einrichten, wie Sie vorgeschlagen und verwenden Sie die Rails Association Helpers. Zum Beispiel, wenn ein Mitglied mehrere Trainer haben kann und Trainer viele Mitglieder haben können, möchten Sie eine Viele-zu-Viele-Beziehung implementieren. Dies geschieht am einfachsten in Schienen über die Modellhelfer "has_many: through". Sie können diesen Klassen dann ein Attribut hinzufügen, das bei Bedarf die Berechtigungsstufe oder den Controllerzugriff in Ihrer App angibt.

+0

Ich denke, es macht Sinn, Modelle wie gesagt gesagt zu haben, hauptsächlich weil es Funktionen vom Trainer gibt, die für das Mitglied keinen Sinn ergeben würden. Aber wenn ich diesen Weg gehe, wird dies die Verwendung eines Edelsteins wie Rolify rechtfertigen? Ich benutze derzeit rolify, um anzugeben, welche Benutzertypen welche Teile eines Dashboards anzeigen können und ich weiß nicht, ob es sinnvoll ist, beide Ansätze zu kombinieren. – Dynelight

+1

Ich bin nicht vertraut mit Rolify, aber Autorisierung ist etwas, das leicht benutzerdefinierte Rolle gerollt werden kann, wenn Sie nur diese beiden Arten behandeln möchten. Fügen Sie zum Beispiel eine "before_action: some_custom_method" zum Controller hinzu, wo diese "some_custom_method" überprüft, ob der "current_user" von diesem Typ ist. Wenn es nicht umgeleitet wird, blinkt ein Fehler, den Sie wahrscheinlich in jedem Rails-Tutorial je gesehen haben lol, und gibt false zurück, um die weitere Ausführung zu stoppen. – bkunzi01

Verwandte Themen