2011-05-14 8 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를! 나는 실제로 문자 그대로이 일을하는 법을 배웠고 나는 내 자신의 질문에 대답하기 위해 여기에왔다. LOL하지만 당신이 나를 때렸으니 +1과 답 신용을주었습니다. Object.const_set ("Computers", Class.new (ActiveRecord :: Base) {})'이제 Computers.all은 챔피언처럼 작동합니다. 감사! – cbmeeks

+1

당신을 도울 다행, metaprogramming 규칙 !!!! :) – bor1s

관련 문제