Ruby 在运行时生成子类
Ruby Generating Subclass at runtime
我现在遇到了一个问题。
我有一件 parent class 物品(型号)。我有两个继承自 Item 的静态 subclasses。
但是通过视图表单,我希望管理员用户也能够在 运行 时间创建一个新的 Item subclass。
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
在视图中,我想提供一个表单,用户可以在其中添加新名称并单击“创建”,它会动态创建一个新的 class。
我需要以下方面的帮助:
- 如何实现。
- 还有就是元编程还是得用
一个工厂模式并给出一个默认值 class?
您是否在寻找`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。
我现在遇到了一个问题。
我有一件 parent class 物品(型号)。我有两个继承自 Item 的静态 subclasses。
但是通过视图表单,我希望管理员用户也能够在 运行 时间创建一个新的 Item subclass。
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
在视图中,我想提供一个表单,用户可以在其中添加新名称并单击“创建”,它会动态创建一个新的 class。
我需要以下方面的帮助:
- 如何实现。
- 还有就是元编程还是得用 一个工厂模式并给出一个默认值 class?
您是否在寻找`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。