Quello che sto cercando di fare è avere una classe base per alcuni dei miei modelli che ha un certo comportamento predefinito ActiveRecord:Rails ActiveRecord - eredita da una classe base senza tavolo
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
Tuttavia, voglio ColorOption e FabricOption si trovano ciascuno nelle proprie tabelle. NON voglio usare STI o avere una tabella per la classe di base "Opzione". L'unico modo per farlo funzionare è con una magia di metaprogrammazione non ereditaria. Ma mi chiedevo se c'era un modo per dire ad AR che la classe base non ha bisogno di un tavolo. È solo lì per un comportamento in più e per mettere le altre sottoclassi nella propria tabella come al solito.
Grazie, Craig
sì ho provato il modulo, ma il modulo non può vedere i metodi di registrazione attivi come has_many: prodotti. Dice che il metodo non è definito. – fregas
Come hai provato? Stephan –
fregas: assicurati di includere qualsiasi chiamata al metodo di classe, come 'has_many' o convalide all'interno del metodo' self.included' Stephan ha nel suo esempio –