Как я могу динамически создать класс на основе ActiveRecord во время выполнения? (Рубин) - PullRequest
3 голосов
/ 14 мая 2011

Я экспериментирую с метапрограммированием и хочу динамически создать класс, который наследуется от 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 Ответ

7 голосов
/ 26 мая 2011

Попробуйте сделать это:

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