映射到深度哈希值

时间:2010-10-15 22:06:01

标签: ruby-on-rails ruby mongodb mongoid

我正在使用mongodb和mongoid做一个应用程序,我正面临一个问题,我需要将一个文档中的内容映射到另一个文档中的内容。我的计划是在文档中存储一些东西,然后我可以使用它来确定从不同的集合中获取它的价值。但是,这通常是一个关于如何从散列中深入获取数据的红宝石问题。

我的结构是这样的:

Widget
  Sections
    0
      Fields
        0
          value: foobar

如果这是有道理的。假设我想获得第一部分中第一个字段的值,我会做类似的事情:

@widget.sections[0].fields[0].value

没问题。

现在问题是,如何将所有这些作为字符串执行?我想要做的是在数据库中存储一个映射值。所以我有一个关键/值类似于:

mapping: "sections[0].fields[0].value"

现在我如何使用它来从@widget获取数据?我已经尝试了@ widget.send“sections [0] .fields [0] .value”但这不起作用......我可以做@ widget.send“sections”并返回一系列的部分,但我'我不太清楚如何进一步采取行动......

总而言之,我可以这样做:

@widget.sections[0].fields[0].value

如果我有@widget和字符串“sections [0] .fields [0] .value”我该怎么执行呢?

1 个答案:

答案 0 :(得分:1)

@widget.instance_eval("sections[0].fields[0].value")

应该这样做。