【问题标题】:Modify a list of variables when passed as a string [closed]作为字符串传递时修改变量列表[关闭]
【发布时间】:2013-04-09 01:42:01
【问题描述】:

我有一个类 (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 个左右的变量)完成,所以我想将它移动到一个单独的函数中,而不是为每个模型类定义这些函数。

【问题讨论】:

  • 您要在这里解决的真正问题是什么?
  • 你可以在类中添加一个实例方法,它会达到你的目的。
  • @muistooshort:请参阅我的原始问题编辑以获取更多信息。
  • @sunny1304 请参阅原始问题中的编辑
  • 为什么不使用 ActiveRecord 内置的标准 serialize 支持? serialize 是(IMO)有点黑客,但你正在做的看起来像是在解决一个有更多黑客的黑客。

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


【解决方案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

【讨论】:

    猜你喜欢
    • 2021-08-15
    • 2022-08-07
    • 2015-10-28
    • 2011-12-07
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    相关资源
    最近更新 更多