作为字符串传递时修改变量列表

时间:2013-04-09 01:42:01

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个类(X)的ruby实例和一个变量列表作为字符串[“var1”,“var2”,..,“varn”]。我有一个函数,它将修改这些值,以便净效果是这样的:

def modify(instance_obj, arrray_of_variables)
  # do something
end

净效应应该是:

X.var1 = modifyVar(X.var1)
X.var2 = modifyVar(X.var2)
..
X.varn = modifyVar(X.varn)

假设所有变量都是字符串。

编辑(更多信息):我试图解决的实际问题是,对于我的大约10个模型类,我有一些字符串变量,我作为JSON字符串存储在数据库中。所以我有两个函数parse_from_json(应该被称为after_find)和serialize_to_json(被称为before_save)。由于这将针对相当多的模型类(大约10个模型类和总共30个变量左右)完成,所以我想将它移动到一个单独的函数,而不是为每个模型类定义这些函数。

1 个答案:

答案 0 :(得分:1)

你可以试试这个。

def modify(instance_obj, arrray_of_variables)
  arrray_of_variables.each do |variable|
    instance_obj.send("#{variable}=", modifyVar(instance_obj.send(variable)))
  end
end