2012-03-24 11 views
1

Ich lerne immer noch Rails und wie ich meine Ressourcenstruktur am besten gestalte. Könnte mir jemand dabei helfen? Hier ist mein Problem:Ruby on Rails Resource Design, Singular und Plural

Ich entwerfe ein spezialisiertes soziales Netzwerk mit Profilen - jedes Konto hat ein Profil. Im Moment speichert ein Account grundlegende Informationen über den Benutzer (Benutzername, Passwort usw.) ab der ersten Anmeldung. Ein Profil speichert andere Gedanken wie einen Bild-Link, Antworten auf Persönlichkeitsfragen (die über Fremdschlüssel mit einem Profil verknüpft sind) und vielleicht mehr in der Zukunft. Zwischen Konto und Profil besteht eine Eins-zu-eins-Beziehung. Benutzer können ihr eigenes Profil anzeigen und bearbeiten und Profile anderer anzeigen.

Meine Fragen:

  1. Ist es eine gute Idee, diese beiden in getrennten Ressourcen insgesamt (das heißt zwei verschiedene Modelle) oder reduzieren sie in ein Modell mit zwei Controllern aufgeteilt? Ich habe das letztere versucht, und es scheint fast mehr Ärger als es wert ist. Kämpfe ich in diesem Fall gegen den Rahmen? Ich bin mir noch nicht sicher, ob Benutzer in Zukunft mehr als ein Konto haben können.

  2. Wenn ich sie spalte, sollte ich eine Singular- oder Plural-Ressource für das Profil verwenden? Ich habe in der Sprache auf guide.rubyonrails.org festgestellt, dass die Arbeit mit der ONE-ONLY-Profil-Ressource funktioniert. Meine Frage in Bezug auf meine derzeitige Situation ist: "Einer und nur" in Bezug auf was? Das "einzige" Profil für das Konto des aktuellen Nutzers oder für die gesamte Website? Wenn ja, wie kann ich die aktuelle Benutzersicht Profile anderer Nutzer hat - soll ich einen URL-Parameter wie folgt:

http://www.example.com/profile?id=x, wobei x die anderen Benutzer-Account-ID

Wenn ich unterwegs Plural Route, soll der Index "Alle Profile" alle für den aktuellen Benutzer oder für alle anderen auf der Website bedeuten? Oder liegt das an meiner eigenen Interpretation?

Ich würde jede Hilfe, die ich damit bekommen kann, schätzen, da ich fühle, wie ich anfange, REST und RoR begrifflich zu verstehen, aber gerade versuche, es in die Praxis umzusetzen. Vielen Dank!

Antwort

1

Ich würde persönlich Konto und Profil als zwei separate Ressourcen oder auf dem letzten 2 separate Controller auf verschiedene Teile des gleichen Modells zugreifen. Dies ermöglicht einfache Routen wie http://www.example.com/profiles/2 zum Anzeigen anderer Benutzer und http://www.example.com/accounts/2 zum Verwalten Ihres eigenen Kontos, ohne dass Sie benutzerdefinierte Routen hinzufügen müssen.

Wenn Sie die Möglichkeit haben, einem Konto weitere Profile hinzuzufügen, ist dies auch eine Form der Zukunftssicherung.

+0

Hallo, BookOfGreg, vielen Dank für Ihre Antwort - es ist sehr hilfreich - ich werde sie teilen. Würden Sie mir in Anbetracht Ihrer Beispiel-URI empfehlen, dass ich in diesem Fall die Pluralroute wählen würde (d. H. Ressourcen: Profile statt Ressource: Profil), damit die Benutzer die Profile der anderen sehen können? Oder wäre es sinnvoller (wäre es einfacher), einen URL-Parameter mit der singulären Route zu verwenden? – spanport

+0

Ich bin nicht der erfahrenste Ruby-Entwickler, aber Konvention scheint, dass Sie Ressourcen hätten: Profile in der routes.rb, die Ihnen die http://www.example.com/profiles Route durch profiles_path geben würde. – BookOfGreg

+0

Diese Lösung wird klappen - danke für die Klärung! – spanport