Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby属性元编程_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Ruby属性元编程

Ruby on rails Ruby属性元编程,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的用户具有以下属性: :step1_local :step2_local :step3_local ... ... :local1 :local2 :local3 我想基于同一模型上的另一组属性更改属性值。我想在用户上做一些处理映射,比如: def magic (user) user.local(1..3) = process(user.step(1..3)_local) end 当然,上面的代码不起作用(示例)。我不知道如何在不逐个检查每个属性的情况下动态地执行它。我想将一个处理映

我的
用户
具有以下属性:

:step1_local
:step2_local
:step3_local
...
...
:local1
:local2
:local3
我想基于同一模型上的另一组属性更改属性值。我想在
用户
上做一些处理映射,比如:

def magic (user)
   user.local(1..3) = process(user.step(1..3)_local)
end
当然,上面的代码不起作用(示例)。我不知道如何在不逐个检查每个属性的情况下动态地执行它。我想将一个处理映射到另一个处理。有什么想法吗?

您可以使用以下方法:

def magic(user)
  (1..3).each do |n|
    user.public_send("local#{n}=", process(user.read_attribute("step#{n}_local")))
  end
end