-1

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

上面的代码当然不起作用(示例)。我不确定如何在不单独遍历每个属性的情况下动态执行此操作。我想将处理映射到另一个。有任何想法吗?

4

1 回答 1

2

您可以使用Object#public_sendand 方法,如下所示:

def magic(user)
  (1..3).each do |n|
    user.public_send("local#{n}=", process(user.read_attribute("step#{n}_local")))
  end
end
于 2013-09-30T07:31:44.153 回答