Ich arbeite derzeit an einer Rails 3-Anwendung, die aussieht, als müsste sie für einige Modelle Class Table-Vererbung verwenden.Klassentabellenvererbung in Rails 3
Ein vereinfachtes Beispiel für das, was vor sich geht, ist dies.
Ich habe eine Klasse namens Person mit allgemeinen Attributen wie Name, E-Mail, Passwort, die für alle Arten von Menschen in der Anwendung und für die Authentifizierung verwendet werden.
Es gibt zwei Unterklassen für Person (oder zwei Arten von Personen ...), Fahrer und Beifahrer. Beide Unterklassen teilen die generischen Attribute von Person, haben dann jedoch spezifische zusätzliche Attribute, die für sie selbst einzigartig sind. (Zum Beispiel kann ein Fahrer viele Fahrzeuge und Lizenzen haben, aber ein Passagier würde nicht)
Wie würde ich CTI für diese Art von Situation implementieren? Ich habe ein Beispiel suche hier zur Verfügung gestellt:
http://rhnh.net/2010/08/15/class-table-inheritance-and-eager-loading
Aber es ist nicht zu spekulieren, wie die gemeinsamen Attribute einer Person von einem Fahrer oder Passagier-Objekt zuzugreifen, und ich bin ein wenig verwirrt durch Das.
Insbesondere, was ich möchte wissen, ist:
Wenn ich die Attribute eines Treiber-Aktualisierung, wie kann ich leicht die relevanten Attribute auf der übergeordneten Menschen Tabelle zugreifen und diese aktualisieren? Muss ich mich in einen after_save Callback einklinken und ausscheiden, welche Attributaktualisierung wohin geht? Oder gibt es einen besseren Weg, dies zu erreichen?
Ich sollte hinzufügen, dass dies ein vereinfachtes Beispiel dafür ist, was tatsächlich in meiner App passiert. Ich bin sicher, dass ich in meiner Situation die Vererbung von Klassentabellen implementieren muss, Single Table Inheritance wäre nicht der beste Weg. –
Ich habe einen Kommentar zu dem Blog geschrieben, auf den ich in meiner Frage Bezug genommen habe und der Autor hat freundlicherweise ein Beispiel für eine Möglichkeit gegeben: http://rhnh.net/2010/08/17/updating-class-table-inheritance- Tabellen (Sie rocken Xavier!) –