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?

War es hilfreich?

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
scroll top