Ruby在运行时生成子类
问题描述:
我现在正面临一个问题。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,并动态创建一个新类。
我想对于帮助:
- 如何实现这一目标。
- 也是它的元编程或我必须使用 工厂模式,并给予默认的类?
答
你寻找`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。
有意义,因为Class也是ruby中的一个对象。谢谢:) (我的坏!那是在这里打字时输错) –