Single Table Inheritance (STI) Spalte Verbände
-
18-09-2019 - |
Frage
Wenn einzelne Tabelle Vererbung macht man vorsichtig sein, nicht um die Spalten zu füllen, die zu unterschiedlichen Modellen spezifisch sind? Gibt es eine Möglichkeit, um festzulegen, welche Spalten jedes Modell verwendet?
Lösung
Was Rails betrifft, so kann jede Spalte in jeder Unterklasse festgelegt werden. Sie können Logik der Unterklasse-Modelle in den bestimmten Bereichen zu verhindern, dass festgelegt wird, aber es gibt keine automatisierte Möglichkeit, dies zu tun. Sie könnten wahrscheinlich implementieren sie ein before_save
Filter hat.
class MySubModel < MyModel
UNUSED_FIELDS = %w{ field_x field_y field_z }
def before_save
UNUSED_FIELDS.each {|f| self.send("#{f}=", nil)}
end
end
Obwohl, wenn Sie viele Spalten haben, die nur von einer Unterklasse verwendet werden, STI wahrscheinlich nicht das beste Vererbungsmodell zu verwenden ist.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow