2012-05-24 56 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。 –