Ich habe gerade den Blogbeitrag von Chad Fowler über 20 Rails Entwicklung No-Nos . Zur Vererbung einer einzelnen Tabelle kommentiert er:
Die Speicherung einer Spalte namens "Typ", die einen Klassennamen enthält, ist ein ziemlich guter Indikator dafür, dass etwas faul ist. Es ist verdächtig, aber nicht immer schlecht. Ich denke jedoch, dass Sie sich jedes Mal, wenn Sie es verwenden, mehr als einmal fragen sollten, ob es die richtige Lösung ist. Datenbanken tun das, was sie am besten können, nicht so gut, wenn man viele STI und polymorphe Assoziationen hat.
Ich schreibe eine Blog-Anwendung und erwäge den Einsatz von STI für die Kommentare, die zu einem Beitrag abgegeben werden können, und für die Kontaktnachrichten, die Besucher eingeben können, wenn sie mit mir in Kontakt treten wollen. Mein Message
Modell erbt von meinem Comment
Modell. Beide haben gemeinsame Merkmale, außer dass sie Message
haben eine zusätzliche subject
Feld. Eine weitere Gemeinsamkeit ist, dass beide zur Spamprüfung an Akismet übermittelt werden.
Anstatt mich mehr als einmal zu fragen, ob es die richtige Lösung ist, wie Chad vorschlägt, dachte ich mir, dass ich auch ein paar Meinungen von den Stack Overflow-Experten einholen würde! Klingt das, was ich vorschlage, wie eine gute Lösung für STI?