如何在运行时基于ActiveRecord动态创建类? (红宝石)

时间:2011-05-14 17:27:26

标签: activerecord metaprogramming ruby-1.9.2

我正在尝试使用元编程,并希望动态创建一个继承自ActiveRecord的类。

例如,我可以这样做:

Object.const_set("Orders", Class.new { def blah() 42 end })

现在我可以:

o = Orders.new
o.blah   #<== 42

但是当我尝试:

Object.const_set("Orders", Class.new < ActiveRecord::Base { def blah() 42 end })

给我一​​个语法错误和

Object.const_set("Orders", Class.new { def blah() 42 end } < ActiveRecord::Base)

在我尝试实例化Orders

之前不会抱怨

任何提示?

感谢。

1 个答案:

答案 0 :(得分:7)

尝试这样做:

SomeClass = Class.new(ActiveRecord::Base) do
  .... #some behaviour
end