1

継承に使用できる「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と、それらも問題なく継承されます..

私が達成しようとしていることは可能ですか?

他に何かする必要がありますか?

4

1 に答える 1