2011-05-14 71 views
3

我正在尝试元编程,并且想要动态地创建一个从ActiveRecord继承的类。如何在运行时动态创建基于ActiveRecord的类? (Ruby)

例如,我可以这样做:

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

没有抱怨任何提示?

谢谢。

回答

6

试着这样做:

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

HA!实际上,我确实发现了如何做到这一点,我来到这里回答我自己的问题。大声笑但是,既然你击败了我,我给了你+1,并回答信贷。下面是我做的:'Object.const_set(“Computers”,Class.new(ActiveRecord :: Base){})'现在,'Computers.all'就像一个冠军。谢谢! – cbmeeks 2011-05-27 00:19:42

+1

很高兴帮助你,元编程规则! :) – bor1s 2011-05-27 07:12:53