0

我现在正面临一个问题。Ruby在运行时生成子类

我有一个父类Item(Model)。我有两个从Item继承的静态子类。

但是通过视图窗体,我希望管理员用户能够在运行时创建一个新的Item子类。

class Item < ActiveRecord::Base 
#template methods 
end 

class StoreItem < Item 
#hooks for overriding template method 
end 

class OnlineItem < Item 
#hooks for overriding template method 
end 

在视图中,我想给出一个表单,用户可以在其中添加一个新名称,然后单击create,并动态创建一个新类。

我想对于帮助:

  1. 如何实现这一目标。
  2. 也是它的元编程或我必须使用 工厂模式,并给予默认的类?

回答

1

你寻找`Class.new(项目)``

例子:

require 'active_record' 

class Item < ActiveRecord::Base 
#template methods 
end 

x = Class.new(Item) 
puts x.ancestors 

一个祖先是Item

顺便说一句:您的Class StoreItem < Item是错误的。在这种情况下,您必须使用class而不是Class。

+0

有意义,因为Class也是ruby中的一个对象。谢谢:) (我的坏!那是在这里打字时输错) –