Was ich suche zu tun ist, für einige meiner Modelle eine Basisklasse haben, die einige Standardactive Verhalten hat:Rails Activerecord - ohne Tisch von einer Basisklasse erben
class Option < ActiveRecord::Base
has_many :products
def some_method
#stuff
end
#etc..etc..
end
class ColorOption < Option
#stuff...
end
class FabricOption < Option
#stuff...
end
Allerdings möchte ich ColorOption und FabricOption für jede in ihren eigenen Tabellen. Ich möchte STI NICHT verwenden oder eine Tabelle für die Basisklasse "Option" haben. Die einzige Möglichkeit, dies zu erreichen, ist eine Metaprogrammierungszauberei, die keine Vererbung darstellt. Aber ich fragte mich, ob es eine Möglichkeit gab, AR mitzuteilen, dass die Basisklasse keine Tabelle benötigt. Es ist nur da für zusätzliches Verhalten, und die anderen Unterklassen wie üblich in ihre eigene Tabelle zu setzen.
Danke, Craig
Ja, ich habe das Modul versucht, aber das Modul kann die aktiven Record-Methoden wie has_many: products nicht sehen. Es sagt, dass die Methode nicht definiert ist. – fregas
Wie hast du es versucht? Stephan –
fregas: Stellen Sie sicher, alle Klassenmethoden Aufrufe, wie 'has_many' oder Validierungen innerhalb der' self.included' Methode Stephan hat in seinem Beispiel –