継承に使用できる「DynObject」という ActiveRecord クラスがあります。
初期化時に、それを継承するいくつかのクラスを動的に作成します。
classes_config = { foo: 'foo', bar: 'bar' }
classes_config.each do |name,options|
klass = Class.new( DynObject ) do
end
self.klasses[name] = const_set( "#{name.camelize}DynObject", klass )
end
これで問題ありません。これらのクラスは問題なく作成されます。しかし、ActiveRecord が作成されたレコードを読み込もうとすると、STI メカニズムが失敗します。(ActiveRecord::SubclassNotFound (The single-table inheritance mechanism failed to locate the subclass: 'FooObject'....))
type
列で名前が付けられているようにクラスを検査すると、クラスが存在するため、これは奇妙だと思います..
これらのクラスを確認するancestors
と、それらも問題なく継承されます..
私が達成しようとしていることは可能ですか?
他に何かする必要がありますか?