2012-05-24 1 views
1

변수를 통해 연산자/메서드에 액세스하려면 어떻게합니까? 그래서 그 대신이의연산자/메서드에 변수 사용

:

c = Computer.new 
c.computer_name = "bla" 
c.operating_system = "Windows XP" 
c.user_name = "joesmith" 
c.save 

(더하기 많은) 내가 해시를 사용하여 동적으로 값을 할당 할

: 또한

c = Computer.new 
params.each do |key,val| 
    c."#{key}" = val.to_s 
end 
c.save 

이 올바른 것입니다 여기에 용어가 있습니까?

답변

0

한 사소한 방법 (-DataMapper 특정 있지만 prop_name= 방법을 가정하지 않음), send을 사용하는 것입니다

c.send("#{key}=".to_sym, val.to_s) 
+0

이것이 내가 찾고 있었던 것입니다! 감사! – DanD

1

나는 그것을 시도하지 못했지만, Computer.new params 작동합니다.
mass assignment에주의하십시오 (DataMapper에만 국한되지는 않음).

+0

+1, 어쨌든 DM은 일반적인 AR 스타일의 init-from-hash를 가지고 있습니다. –