folgende Hierarchie BeiGibt es eine Möglichkeit, STI-Kindmodellobjekte aus der STI-Basisklasse zu erstellen?
class Content < ActiveRecord::Base end
class Page < Content end
class Post < Content end
Ist es möglich, beispielsweise Seiteninhalt (indirekt) unter Verwendung der folgenden Art zu erstellen:
c = Content.new c.type = Seite c.title = 'test' c.save!
Sieht aus wie Typ ist auch eine Rubin-Methode auf dem Objekt.
Was ist der Unterschied zwischen c.type = Page, c.write_attribute (: type, "Page") und c.send (: type =, "Page"). Ich glaube, dass all diese drei Methoden verständlicherweise @type = "Page" setzen, oder? Auch wird es irgendein Problem geben, wenn ich meine eigenen Getter- und Setter-Methoden für den Typ definiere, der die object.type-Methode außer Kraft setzt? – Dharam
bei der zweiten Überprüfung, c.type = "Seite" entspricht genau c.write_attribute (: type, "Page"). Das Wichtigste ist, dass es ein String-Wert sein muss. Solange Ihre Überschreibung vom Typ immer noch vernünftige Werte zurückgibt, sollten Sie in Ordnung sein. Sie können die STI-Spalte auch ändern, indem Sie den Wert von vererbung_spalte ändern. –