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。

我需要以下方面的帮助:

  1. 如何实现。
  2. 还有就是元编程还是得用 一个工厂模式并给出一个默认值 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。