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

发布于 2024-11-07 10:00:00 字数 555 浏览 0 评论 0原文

我正在尝试元编程,并希望动态创建一个继承自 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 类之前不会抱怨

有任何提示吗?

谢谢。

I'm experimenting with meta programming and want to dynamically create a class that inherits from ActiveRecord.

For example, I can do this:

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

So now I can:

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

But when I try to:

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

Gives me a syntax error and

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

Doesn't complain until I try to instantiate an Orders class

Any tips?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

他是夢罘是命 2024-11-14 10:00:00

尝试这样做:

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

Try to do this:

SomeClass = Class.new(ActiveRecord::Base) do
  .... #some behaviour
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文