2011-08-24 4 views
2

변수가 class_name입니다. class_nameblog, comment 등의 문자열 값을 내부의 값을 기준으로 유지할 수 있습니다. class_name 해당 개체를 만들어야합니다.Ruby에서 변수 안에있는 내용을 사용하여 객체를 만들려면 어떻게해야합니까?

class_nameblog 인 경우 블로그 개체를 만들어야합니다. 스위치를 사용하지 않고 어떻게 이것을 할 수 있습니까?

+0

이유를 설명하고 일부 코드를 표시하려는 이유를 설명해 주시겠습니까? –

답변

6

당신은 thusly 히 camelizeconstantize 방법을 사용하십시오 :

klass = class_name.camelize.constantize 
thing = klass.new 

당신이 class_name'blog' 시작 경우 klassBlog로 끝날 것입니다.

모두 camelizeconstantize
klass = class_name.constantize 
thing = klass.new 

은 레일 별하지만 우리는 레일 - 땅에있어, 그래서 내가 "루비 온 레일"태그를 참조하십시오 당신의 캐릭터는, 실제로 'Blog' 경우.

+0

레일에서 작동 할 것으로 예상했지만 레일 기능이있을 것이라고는 생각하지 않았습니다. 고마워, 내가 정확히 찾고 있었던거야. :) – Rahul

4

Kernel.const_get을 사용할 수 있지만 대소 문자가 중요합니다.

a = 'Blog' 
b = Kernel.const_get(a).new 
+0

기술적으로 ['const_get'은 모듈에 있습니다.] (http://ruby-doc.org/core/classes/Module.html#M000485) 저수준 클래스는 모두 충분히 섞여 있습니다. –

관련 문제