czego szukam zrobić, to mieć klasę bazową dla niektórych z moich modeli, które ma pewne zachowanie domyślne ActiveRecord:Rails ActiveRecord - dziedziczenie z klasy bazowej bez stołu
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
Jednakże chcę ColorOption i FabricOption dla każdego z nich we własnych tabelach. NIE chcę używać STI ani tabeli dla klasy bazowej "Opcja". Jedynym sposobem, w jaki to zrobiłem, jest magia metaprogramowania, która nie jest dziedziczona. Ale zastanawiałem się, czy istnieje sposób, aby powiedzieć AR, że klasa bazowa nie potrzebuje tabeli. Jest tam tylko po to, by zachować dodatkowe zachowanie i umieścić pozostałe podklasy w swoim własnym stole, jak zwykle.
Dzięki Craig
Tak, próbowałem modułu, ale moduł nie może zobaczyć aktywnych metod zapisu, takich jak has_many: products. Mówi, że metoda jest niezdefiniowana. – fregas
Jak próbowałeś? Stephan –
fregas: upewnij się, że zawiera wszystkie wywołania metod klas, takie jak 'has_many' lub walidacje wewnątrz metody' self.included' Stephan ma w swoim przykładzie –