2009-04-22 20 views
0

Ich habe eine Anwendung entwickelt, die aus mehr als 20 Tabellen besteht und Ruby on Rails verwendet. Ich benutze ein Authentifizierungssystem für Benutzer, um sich anzumelden. Ich möchte dem Benutzer anzeigen, wenn er sich anmeldet, Informationen zu ihm, die über viele Tabellen gefunden werden können, zwischen diesen Tabellen gibt es alle möglichen Beziehungen. Wie kann ich das im RoR erreichen? Sollte ich in Erwägung ziehen, Ansichten, mehrere Joins zu verwenden? Ich habe es nicht geschafft, Informationen von einem Modell weiter zu bekommen als 2 Tabellen, die in den Tabellen mit klassischen Ansätzen wie "has many", ": through" usw. suchen.Komplexe Beziehungen in Ruby - Daten über viele Tabellen hinweg anzeigen

Können Sie uns bitte Ihr Wissen mitteilen?

Danke!

+0

Ich bezog mich auf die SQL-Tabellenansichten Integration mit RoR, nicht View-Komponente. Entschuldigen Sie das Missverständnis. –

Antwort

0

Ich nehme an, dass Ihr Benutzermodell Beziehungen mit allen Tabellen hat, die verwandte Informationen enthalten.

Vorausgesetzt, dass Sie eine Aktion in UsersController und eine entsprechende Ansicht haben können. In der Aktion können Sie herausfinden, wer der aktuell verbundene Benutzer ist, und dann alle benötigten Daten aus den zugehörigen Modellen abrufen. Geben Sie diese Daten in die Ansicht zurück und rendern Sie sie nach Ihren Wünschen.

0

Ich glaube, Ihre Frage zu allgemein ist, aber hier sind einige Gedanken ... vorausgesetzt, Sie machen eine herkömmliche Rails-Anwendung

„Soll ich Ansichten in Betracht ziehen?“

Ansichten sehen Benutzer in herkömmlichen Rails-Apps. Wenn Sie also Daten für Ihre Benutzer anzeigen möchten, verwenden Sie Ansichten, um Daten anzuzeigen, die in den Controllern verfügbar sind. Jede Aktion in der Steuerung erfasst Daten von den Modellen und verfügt über eine entsprechende Ansicht.

Um Bücher anzuzeigen, die zu einem Benutzer gehören, haben Sie möglicherweise einen Bücher-Controller. Nachdem sich ein Benutzer angemeldet hat, haben Sie eine "Index" -Aktion auf dem "Bücher" -Controller, die sagt: @user_books = @ user.books. In diesem Fall wäre @user das Benutzerobjekt Ihres Authentifizierungssystems. Ein Benutzer würde viele Bücher haben, und es ist möglich, dass ein Buch viele Benutzer haben würde. Dann haben Sie in Ihrer views/books/index.html.erb Datei etwas wie:

<ul> 
<% @user_books.each do |b| %> 
    <li> <%= b.name %> </li> 
<% end %> 
</ul> 

, um eine Liste von Buchnamen zu drucken.

Joins werden automatisch von Rails ausgeführt, Sie müssen sich also noch keine Gedanken machen. Aber wenn Ihre App sehr groß wird und Abfragen kompliziert sind, müssen Sie die SQL-Anweisungen möglicherweise neu schreiben, um die Skalierbarkeit zu verbessern .... aber das ist offensichtlich ein gutes Problem.

Hoffe, das hilft!

Verwandte Themen