2012-02-28 3 views
8

어떻게 activerecord 객체의 속성 값을 동적으로 가져 옵니까?동적으로 객체의 속성 얻기

예를 들어 나는 attr_name이라는 변수가 있습니다.

person = Person.find(1) 
attr_name = "address" 
address = person.<function_name>(attr_name) 

을 사용할 수 있습니다 function_name :
나는 이런 일을하고 싶지?

답변

3

send은 찾고 계신 방법입니다.

+4

사용하여이 작업을 수행하는 경우, 그래서 나는이 가장 안전하고 올바른 방법입니다 –

22

person.attributes[attr_name] 또는 person.read_attribute(att_name)을 사용하거나 이보다 더 짧으면 person[attr_name]입니다.

+3

그렇게하지 않을 것입니다. 이 속성은 다른 메소드 나 연관이 아닌 속성에서만 작동합니다. –

+0

'object [symbol or string]'문법으로 속성이나 메소드를 얻을 수 없습니다. 간단한 클래스를 만들고 일부 변수 나 메서드를 먼저 도트 구문으로 공개적으로 액세스 할 수있게 만든 다음 심볼 또는 문자열을 통해 액세스하려고 시도합니다. –

+0

''' 데프 @foo = 'foo는 이름' @bar 데프 foo는 = '바 이름' 끝 @foo 끝 끝 foo는 = Foo.new foo는 초기화 클래스 푸 [: foo] ''' –

1

이 매우 위험 할 수에서 함수 이름이 오는 곳 따라 send

address = person.send("function_name" + "attr_name")