2009-08-18 2 views
0

Ich baue gerade eine Website im Stil von "Lifesteam" in Rails. Ein Lifestream ist normalerweise ein Aggregat öffentlicher Inhalte (die normalerweise über APIs empfangen werden).Lifestream in Rails

Ich bin derzeit verwirrt über die Datenbankstruktur.

Es wird eine Benutzer-Tabelle geben (da Benutzer sich anmelden können und ihren eigenen Lifestream haben). Ich frage mich, ob ich auch eine Services-Tabelle haben sollte, oder eine Tabelle für jeden der Services (Twitter, Delicious etc.) oder beides. Ich frage mich auch, wie diese Tabellen miteinander verbunden werden.

Wenn es für jeden Service eine Ressource gäbe, wäre es möglich, dass diese irgendwie von einer einzigen Service-Ressource erben?

Jeder Einblick wäre eine große Hilfe, Danke.

Antwort

0

Ich würde wahrscheinlich getrennte Tabellen für jeden Dienst vermeiden, da es ziemlich schwierig macht, den Dienst in der Zukunft zu erweitern.

Ich wäre versucht, eine Services-Tabelle zu haben, die auch auf eine service_type-Tabelle verweist. Der Servicetyp könnte RSS oder ein anderer Feed sein, den Sie unterstützen könnten.

Fügen Sie Feedzirra hinzu (http://github.com/pauldix/feedzirra/tree/master) und Sie sind weg.

0

Möglicherweise separate Tabelle für jeden Dienst verwenden, die jeweils eine user_id enthält. Dann können sie automatisch durch die user_id verbunden werden.

+0

Gibt es eine Möglichkeit, diese Dienste irgendwie von einem einzelnen Modell oder einer Tabelle zu erben? Also könnte ich Services.all anrufen, anstatt jeden Dienst einzeln aufzurufen. –

0

Ich würde eine generische Tabelle verwenden, um Dienste zu behandeln, um das Hinzufügen eines neuen Dienstes zu erleichtern. Sie können dann Besonderheiten mit zusätzlichen Feldern behandeln, aber am Ende werden sich die Dienste nicht so unterscheiden.

0

Eine generische Tabelle, um Dienstleistungen Welt zu behandeln, ist groß. Sie können Benutzervererbung verwenden, um jeden Dienst zu spezialisieren.