我的user
具有以下属性:
:step1_local
:step2_local
:step3_local
...
...
:local1
:local2
:local3
我想根据同一模型上的另一组属性更改属性值。我想在user
上做一些处理映射,比如说:
def magic (user)
user.local(1..3) = process(user.step(1..3)_local)
end
上面的代码当然不起作用(例子)。我不确定如何动态地做它而不单独检查每个属性。我想将处理映射到另一个。有什么想法吗?
答案 0 :(得分:2)
您可以使用Object#public_send
和方法,如下所示:
def magic(user)
(1..3).each do |n|
user.public_send("local#{n}=", process(user.read_attribute("step#{n}_local")))
end
end