Wir haben eine Rails App, die 2 Modelle verwendet: Bild und Video. Sie gehören beide zu einer Collection-Entity. Was passiert ist, wenn wir beide Arten einheitlich abfragen oder verwenden wollen - wir können nicht. Wenn wir also die letzten 15 holen wollen, fragen wir zweimal und sortieren dann und nehmen dann die 15 wieder. Wenn wir (ID) finden möchten, müssen wir immer bekommen, welcher Typ es ist - Video oder Bild ...Entwerfen einer polymorphen Klasse
Also haben wir darüber nachgedacht, wie man das löst. Besteht ein Asset-Modell, das auf eins zeigt? Kann es geladen werden?
In meiner Vision muss es Asset.find (_id) sein und ich werde entweder Bild oder Video agnostisch bekommen.
Was ist der einfachste oder korrekteste Weg, dies in Rails zu lösen?
Danke!
Ich denke 'enum' in Schienen ist, was Sie suchen. http://api.rubyonrails.org/v5.1/classes/ActiveRecord/Enum.html. Ich hoffe das hilft. – thanhnha1103
Es gibt keine korrekte Möglichkeit, dies zu lösen, da es ein Beispiel für [Objektrelationale Impedanzabweichung] ist (https://en.wikipedia.org/wiki/Object-relational_impedance_mismatch). Übliche Wege, dies zu lösen, sind die Vererbung einzelner Tabellen oder mehrerer Tabellen. – max
Mit STI, wie von Tamer beschrieben, können Sie MediaItem.find (id) ausführen und je nach Ergebnis ein Video- oder Bildmodell erstellen. – s1mpl3