我想在Ruby中生成完整的类,扩展其他类。例如,我有我的功能:
def generator(classname, methodname, ModelClass)
# make the class
# now make the instance method on the class
end
并调用它会生成如下所示的类:
generator 'ArticlesController' 'save' 'Article'
class ArticlesController < ApplicationController
def save
@generated_params = # generate params from Article
@item = Article.new(@generated_params)
@item.save
end
end
除了我可以根据一些输入创建新类。
答案 0 :(得分:2)
对于您的案例代码将是这样的:
def generator(classname, methodname, arbitrary_class = ArbitraryClass)
klass = Class.new(Parent) do
define_method(methodname) do |*args, &block|
@generated_params = # generate params from method_arg
@item = arbitrary_class.new(@generated_params)
@item.save
end
end
Object.const_set classname, klass
end
这段代码做了三件事:
classname
常量此代码也没有收到生成的类的父类,我希望它很容易添加。生成的方法可以接收任意数量的参数,它们可以通过args
获得。
更新:我将在这里添加一种如何从arbitrary_class
的字符串接收类常量的方法:
"Article".constantize # Article