Wann ist eine STI sinnvoll?Wir speichern für jeden Typ die gleichen Informationen, verwenden sie jedoch unterschiedlich

StackOverflow https://stackoverflow.com/questions/6823171

Frage

Ich weiß also, dass STI die am meisten verachtete Sache überhaupt ist, aber ich habe einen Fall, in dem ich denke, dass es tatsächlich Sinn machen könnte.Meine App analysiert eine Reihe verschiedener Arten von XML-Dateien.Jedes Dateimodell speichert genau die gleichen Informationen.Nur ein paar Informationen darüber, welchem ​​Benutzer es zugeordnet ist, wann es hochgeladen wurde und wo es auf S3 gespeichert ist.

Nachdem die XML-Datei gespeichert wurde, analysiere ich sie nach Informationen, die ich zum Erstellen verschiedener anderer Modelle verwende.Jeder Dateityp erzeugt unterschiedliche Dinge.Es ist möglich, dass es 100 oder mehr verschiedene Arten von XML-Dateien gibt, obwohl ich nicht glaube, dass ich für so viele Parser schreiben werde.Ist STI in diesem Fall sinnvoll?

Der Nachteil ist meiner Meinung nach, dass sich die Modelle alle in einem Verzeichnis befinden, sodass dieses Verzeichnis überflutet wird, es sei denn, man hackt Rails und speichert es in einem Unterverzeichnis im Modellverzeichnis.

Die andere Möglichkeit besteht darin, dass ich ein Art-Feld habe und etwas in das lib-Verzeichnis einfüge, das das alles erledigt.Oder ich verwende resque, vielleicht sollte jeder XML-Dateiparser seine eigene Aufgabe sein.Allerdings gibt es auch Nachteile, zum Beispiel, dass es etwas umständlich ist, einen Job in der Rails-Konsole zu erzwingen.

War es hilfreich?

Lösung

Ihrer Erklärung zufolge speichert das „Datei“-Modell nur die Ergebnisse des Datei-Upload-Prozesses und die zugehörigen Metadaten.Ohne weitere Informationen zu den anderen Arten von Modellen, die aus den analysierten XML-Daten generiert werden, verstehe ich nicht, warum die Vererbung einzelner Tabellen für diesen Anwendungsfall gilt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top