Ich habe gelesen auf polymorphic associations in Ecto ziemlich, und ich stimme der Meinung, dass eine native Datenbank Referenz zwischen Ihren Tabellen vorteilhaft ist.Polymorph has_many in Ecto
In den meisten Fällen wird jedoch der polymorphe belongs_to
referenziert, nicht umgekehrt (has_many
). Ich bin mir immer noch nicht sicher, wie ich damit richtig umgehen soll.
In meinem Fall handelt es sich um eine Phoenix Backend API, ich habe ein Page
Modell, das eine Nummer Widgets
hat. Jedes dieser Widgets hat eine eigene Tabelle und ein eigenes Modell, da es verschiedene Felder speichern und zurückgeben muss. Nehmen wir an, wir haben eine TwoColumnWidget
und eine ThreeColumnWidget
, die beide eine Referenz page_id
an die Page
Modell haben.
Wie würde ich dies idealerweise modellieren, jetzt habe ich eine Zwischenmodell Widget
(mit Datenbank), die eine Spalte für jeden möglichen Widget-Typ hat und wählt die, wo eine ID in einer der Spalten vorhanden ist. Das fühlt sich ziemlich hackig an, da ich für jedes Widget, das synchronisiert werden muss, eine zusätzliche Zeile in der Datenbank speichern muss, sowie den Aufwand, den richtigen Serializer/View für jedes konkrete Widget zu erhalten.
Da meine Domain viele dieser Arten von Beziehungen hat, möchte ich im Allgemeinen eine bessere Lösung finden, um die weitere Entwicklung zu erleichtern. Irgendwelche Zeiger?
Wenn Sie sagen "mit einer eigenen Datenbank", haben Sie wirklich mir eine komplette Datenbank oder "eine eigene Tabelle"? –