【问题标题】:Ruby Generating Subclass at runtimeRuby 在运行时生成子类
【发布时间】:2017-10-28 20:04:44
【问题描述】:

我现在面临一个问题。

我有一个父类项目(模型)。我有两个继承自 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

在视图中,我想提供一个表单,用户可以在其中添加新名称并单击创建,它会动态创建一个新类。

我需要以下方面的帮助:

  1. 如何实现这一点。
  2. 也是元编程还是我必须使用 工厂模式并提供默认类?

【问题讨论】:

    标签: ruby inheritance dynamic metaprogramming dynamic-class-loaders


    【解决方案1】:

    你是否在寻找`Class.new(Item)`

    例子:

    require 'active_record'
    
    class Item < ActiveRecord::Base
     #template methods
    end
    
    x = Class.new(Item)
    puts x.ancestors
    

    其中一个祖先是Item

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

    【讨论】:

    • 有意义,因为 Class 也是 ruby​​ 中的一个对象。谢谢 :) (我的错!在这里打字时打错了)
    猜你喜欢
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多